使用Time.zone时,Rails中的时区转换不正确

时间:2013-01-12 12:09:23

标签: ruby-on-rails ruby-on-rails-3

Time.zone = 'Asia/Kolkata'
Time.zone 
=> (GMT+05:30) Asia/Kolkata

Time.zone已正确设置。

Time.zone.parse('0000-01-01 03:00:00 UTC').strftime('%l:%M %p')
=> " 8:53 AM"

应用了错误的偏移量(+05:33 vs +05:30)

为什么会这样?还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

The time zone in Calcutta before 1941似乎比UTC早5小时53分钟。

如果你使用的时间晚于一年(例如2000年)而不是0年,你应该得到你期望的结果。

由于夏令时,您无法将UTC时间真正转换为当地时间,8:00UTC可以在夏季和冬季转换为不同的当地时间。要自动转换以获得正确的结果,您需要一个完整的日期,而不仅仅是一个时间。