Sinatra 请教个 Sinatra ActiveRecord 时间时区问题

villins · 2016年06月14日 · 5577 次阅读

sinatra 设置了 Time 的时区如下:

Time.zone = "Beijing"
ActiveRecord::Base.default_timezone = :local

然后获取 model 里面的时间字段

Show.last.show_time
2016-06-14 15:20:00 +0800

Show.last.show_time.utc
2016-06-14 07:20:00 UTC

这里用 active_record 获取展示的时间值是错误的 设置了北京时区,获取值不加 8 小时却设置成 CST ,取 utc 值却在已是 utc 时间再减 8 小时

从 rails 获取出来的正确值如下

Show.last.show_time
Tue, 14 Jun 2016 23:20:00 CST +08:00

Show.last.show_time.utc

2016-06-14 15:20:00 UTC

创建时间居然也没有转换成 utc 时间入库,wtf 一样是 ActiveRecord::Base 的子类 在 sinatra 的 datetime 字段的 class 居然是 Time,而在 rails 的是 ActiveSupport::TimeWithZone < Object

villins 关闭了讨论 02月08日 17:12
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册