使用UTC有续集?(Using UTC with Sequel?)

2019-07-30 01:33发布

我想不存储次我的本地时区,但续集正在对我来说真的很难。 我可以将它们设置为UTC之前,我把它们放在那里(有点痛的),但后来当我带他们回来了它假定他们是本地的日期,那么他们在未来的所有8个小时。 这是一些尚未实现了吗? 如果是的话,是否有任何变通办法? 谢谢!

Answer 1:

最简单的方法,试图把他们作为UTC是覆盖literal_datetime和/或literal_time您正在使用返回的UTC时间一个字符串DataSet类。

让他们出UTC取决于你所使用的适配器上。 例如,Postgres的适配器调用Sequel.string_to_datetime,刚刚(默认时间)呼吁解析的Sequel.datetime_class。 如果datetime列包括时区信息,事情应该很好地工作。 如果它不包括时区信息,Time.parse是要承担它被赋予一个本地时间。 在这种情况下,你可能要重写Sequel.string_to_datetime以确保它始终返回与UTC偏移的时间(可能通过调用Time.parse(S).gmtime)。



Answer 2:

这是一个有点在这一点过时,但我相信在这里的最佳解决方案已经改变了原来的答案被张贴。 如果设置

Sequel.default_timezone = :utc

续集将会把所有的时间和UTC不会表现出的问题描述的行为。

了解更多资讯: http://sequel.jeremyevans.net/rdoc/classes/Sequel/Timezones.html



Answer 3:

只是有一个非常类似的问题我自己。

此信息已经从拍摄续集的RDoc

续集可以使用时间或日期时间从数据库返回的时间。 它默认时间。 将其更改为日期,使用方法:

Sequel.datetime_class = DateTime

另外,还要确保你不存储在数据库中的时区信息。 我使用的是Postgres和列类型为无时区的时间戳

这将导致显示的日期/时间在UTC之中。 传递一个日期2009-07-13T03 /时间时,它已经为我工作:22:53Z结果显示为2009-07-13T03:22:53 + 00:00



文章来源: Using UTC with Sequel?
标签: ruby sequel