将日期从Angular传递到Rails

4
我在将日期从Angular传递到Rails时遇到了问题。在我的项目中,我使用datetimepicker指令(https://github.com/dalelotts/angular-bootstrap-datetimepicker),该指令使用moment js。因此,当我选择日期时,它看起来像“Wed Aug 05 2015 11:55:00 GMT+0300 (EEST)”。然后,这个日期被传递到rails api,并且rails将其转换为“2015-08-05T08:55:00.000Z”。因此,我只需要让rails接收到的时间是11:55:00而不是08:55:00
1个回答

2

你需要意识到Wed Aug 05 2015 11:55:00 GMT+0300等同于2015-08-05T08:55:00.000Z,后者是前者翻译成UTC的结果。

要更改Active Record在数据库中保存的时区,可以使用:

# application.rb
config config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = :local

警告!在非UTC格式中保存时间之前,您真的应该三思而后行。

以下是如何查找所有可用时区的方法

rake:time:all

更多信息: https://dev59.com/IW025IYBdhLWcg3wQDlb#32229086

是的,我已经这样做了,但是我弄不清楚为什么设置config.time_zone到任何值都不会有任何变化?我将config.time_zone设置为'Eastern Time (US&Canada)'、'伦敦'、'基辅'、'莫斯科'等,但它仍然是2015-08-05T08:55:00.000Z。我做错了什么? - Anthony
即使你设置了 config.config.time_zone,Active Record 仍然默认使用 UTC。config.config.time_zone 影响的是 Rails,而不是 Active Record 或数据库。 - Mihai Dinculescu
你重启了服务器吗? - Mihai Dinculescu
是的,我已经在每次更改时重新启动了我的服务器。抱歉,但实际上我不明白我应该怎么做才能正确地将选定的日期写入数据库。 - Anthony
我的答案中的两行代码应该可以实现这个。 - Mihai Dinculescu
好的,非常感谢:) 我只是对所有的日期格式感到困惑,你知道的:) 我将按照UTC的方式将日期存储在数据库中。 - Anthony

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接