7

我不想在我当地的时区存储时间,但 Sequel 对我来说真的很难。我可以在将它们放在那里之前将它们设置为 UTC(有点痛苦),但是当我将它们取出时,它假定它们是本地日期,然后它们都是未来 8 小时。这是尚未实施的事情吗?如果是这样,是否有任何解决方法?谢谢!

4

3 回答 3

23

这在这一点上有点过时,但我相信自从发布原始答案以来,这里的最佳解决方案已经改变。如果你设置

Sequel.default_timezone = :utc

sequel 将所有时间视为 UTC,并且不会表现出问题中描述的行为。

Find more info at http://sequel.jeremyevans.net/rdoc/classes/Sequel/Timezones.html

于 2011-09-24T19:36:22.587 回答
5

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

此信息取自Sequel RDoc

Sequel 可以使用 Time 或 DateTime 作为从数据库返回的时间。它默认为时间。要将其更改为 DateTime,请使用:

Sequel.datetime_class = DateTime

还要确保您没有将时区信息存储在数据库中。我正在使用 Postgres,列类型是timestamp without time zone

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

于 2009-07-13T03:56:51.883 回答
4

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

在 UTC 中获取它们取决于您使用的适配器。例如,postgres 适配器调用 Sequel.string_to_datetime,它只调用 Sequel.datetime_class 上的 parse(默认为时间)。如果 datetime 列包含时区信息,则一切正常。如果它不包含时区信息,Time.parse 将假定它是本地时间。在这种情况下,您可能需要覆盖 Sequel.string_to_datetime 以确保它始终返回带有 UTC 偏移量的时间(可能通过调用 Time.parse(s).gmtime)。

于 2009-08-04T21:51:23.150 回答