2013-01-12 34 views
0
Time.zone = 'Asia/Kolkata' 
Time.zone 
=> (GMT+05:30) Asia/Kolkata 

Time.zone已正确设置。使用Time.zone时Rails中的时区转换不正确

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

不正确的被应用的偏移量(+05:33 VS +05:30)

为什么会出现这种情况?有没有更好的办法?

回答

1

The time zone in Calcutta before 1941似乎已经提前5小时53分钟。

如果您使用比该年(例如2000年)晚一年而不是0年,则应该得到预期的结果。

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