Mic*_*ser 21
这点有点过时,但我相信自最初的答案发布以来,这里的最佳解决方案已经改变.如果你设置
Sequel.default_timezone = :utc
Run Code Online (Sandbox Code Playgroud)
续集将所有时间都视为UTC,并且不会展示问题中描述的行为.
有关更多信息,请访问http://sequel.jeremyevans.net/rdoc/classes/Sequel/Timezones.html
我自己也有一个非常相似的问题.
此信息取自Sequel RDoc
续集可以使用Time或DateTime来表示从数据库返回的时间.它默认为时间.要将其更改为DateTime,请使用:
Sequel.datetime_class = DateTime
Run Code Online (Sandbox Code Playgroud)
还要确保不将时区信息存储在数据库中.我正在使用Postgres,列类型是没有时区的时间戳.
这应该导致显示的日期/时间以UTC为单位.在2009-07-13T03:22:53Z的日期/时间通过时,它对我有用,结果显示为2009-07-13T03:22:53 + 00:00
尝试将它们放入 UTC 的最简单方法是覆盖用于返回 UTC 时间文字字符串的数据集类的literal_datetime 和/或literal_time。
以 UTC 格式获取它们取决于您使用的适配器。例如,postgres 适配器调用 Sequel.string_to_datetime,它只调用 Sequel.datetime_class(默认为 Time)上的 parse。如果日期时间列包含时区信息,则一切应该正常。如果它不包含时区信息,Time.parse 将假定给定的是本地时间。在这种情况下,您可能需要重写 Sequel.string_to_datetime 以确保它始终返回具有 UTC 偏移量的时间(也许通过调用 Time.parse(s).gmtime )。
归档时间: |
|
查看次数: |
3679 次 |
最近记录: |