String.to_datetime不使用当前时区(当没有给出时)

Jos*_*eim 7 datetime ruby-on-rails

我注意到,当字符串中没有给出时区时,Rails的String.to_timezone方法不使用当前时区.

$ "2013-01-14 14:38".to_datetime
=> Mon, 14 Jan 2013 14:38:00 +0000
$ DateTime.now
=> Mon, 14 Jan 2013 14:39:50 +0100
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉方法使用当前时区?

谢谢.

And*_*eng 8

试试这个:

Time.zone.parse('2013-01-14 14:38').to_datetime
Run Code Online (Sandbox Code Playgroud)

这将使用当前时区来解析字符串到目前为止.


Jiř*_*šil 5

您可以使用的对象上有#in_time_zone方法DateTime:

"2013-01-14 14:38".to_datetime.in_time_zone
"2013-01-14 14:38".to_datetime.in_time_zone("Prague")
Run Code Online (Sandbox Code Playgroud)

  • 这并没有解决问题.`"2013-01-14 16:06".to_datetime.in_time_zone`导致`星期一,2013年1月14日17:06:00 CET +01:00`,预期结果:星期一,2013年1月14日16:06:00 CET +01:00`(16:06,而不是17:06). (2认同)