Timezone in ruby



我有一个简单的预订场景,用户可以与其他用户预订预定的插槽。我这样做的方式是,我将时间表作为使用Postgres的字符串存储。一个典型的阵列表示[10:00 pm"," 10:30 pm")。但是,由于不同的用户在不同的时区域中,因此我使用客户端来检测时区并在其各自的时区显示插槽。我的问题是,这足以存储时间插槽并将其转换为不同的时区,或者我需要存储精确的时间戳?

我使用Ruby和Rails Framewokr和Postgres db

我使用postgres

将时间段作为字符串存储。

不要。请不要。

如果它们是具体的时间戳(日期 时间),则将其存储为timestamptz,这样它们是独立的。您可以使用AT TIME ZONE操作员在当地时间将它们获取或将其转换为客户端。

如果它们只是时间,请使用time数据类型,并将其存储为UTC时间,使用AT TIME ZONE操作员适当地转换到当地时间或进行客户端转换。

如果可能的话,将它们存储在归一化的表中。如果您由于某种原因无法执行此操作(说服我)至少使用适当的数据类型的PostgreSQL阵列,而不是一系列字符串 - 或更糟糕的是,看起来您可能正在做,则是Ruby的字符串表示字符串阵列。

这是最近在dba.stackexchange.com上讨论的问题的变体,讨论本机数据库类型或逗号分隔列表是否更好。简短版本:除非您有一个真正的,非常非常好的理由去做,否则它是一种友好的方式。

相关内容

  • 没有找到相关文章

最新更新