使用UTC与续集?

我不希望在我当地的时区存储时间,但续集对我来说真的很难。 我可以在将它们放入那里之前将它们设置为UTC(有点痛苦),但是当我把它们取出时它假定它们是本地日期然后它们将来都是8小时。 这件事还没有实现吗? 如果是这样,有没有解决方法? 谢谢!

尝试将它们作为UTC放入的最简单方法是覆盖用于返回UTC时间的文字字符串的数据集类的literal_datetime和/或literal_time。

以UTC格式取出它们取决于您使用的适配器。 例如,postgres适配器调用Sequel.string_to_datetime,它只调用Sequel.datetime_class上的解析(默认为Time)。 如果datetime列包含时区信息,那么事情应该可以正常工作。 如果它不包含时区信息,Time.parse将假定它被赋予本地时间。 在这种情况下,您可能希望覆盖Sequel.string_to_datetime以确保它始终返回UTC偏移的时间(可能通过调用Time.parse(s).gmtime)。

这点有点过时,但我相信自最初的答案发布以来,这里的最佳解决方案已经发生了变化。 如果你设置

Sequel.default_timezone = :utc 

续集将所有时间都视为UTC,并且不会展示问题中描述的行为。

有关更多信息,请访问http://sequel.jeremyevans.net/rdoc/classes/Sequel/Timezones.html

我自己也有一个非常相似的问题。

此信息取自Sequel RDoc

续集可以使用Time或DateTime来表示从数据库返回的时间。 默认为时间。 要将其更改为DateTime,请使用:

 Sequel.datetime_class = DateTime 

还要确保不将时区信息存储在数据库中。 我正在使用Postgres,列类型是没有时区的时间戳

这应导致显示的日期/时间为UTC。 在2009-07-13T03:22:53Z的日期/时间通过时,它对我有用 ,结果显示为2009-07-13T03:22:53 + 00:00