我不确定这种行为是否是有意的,但对我来说似乎有点奇怪。我正在使用How do you get DateTime.parse 中的代码来返回您所在时区的时间?
require 'date'
estHoursOffset = +10 # Brisbane/Australia
estOffset = Rational(estHoursOffset, 24)
有时,返回的 DateTime 会早一秒:
(DateTime.parse("2012-07-15 16:56:00") - (estHoursOffset/24.0)).new_offset(estOffset)
=> #<DateTime: 2012-07-15T16:55:59+10:00 (2456123.788888889,5/12,2299161)>
但在其他时候,这似乎是正确的:
(DateTime.parse("2012-07-15 16:16:00") - (estHoursOffset/24.0)).new_offset(estOffset)
=> #<DateTime: 2012-07-15T16:16:00+10:00 (2456123.7611111114,5/12,2299161)>
我正在编写的程序只关心分钟,这意味着我可以16:55
在我想要的时候回来16:56
。
所以我的问题是;
- 这是故意的吗?(如果是这样,它是否记录在某处 - 我找不到任何东西。)
- 有没有一种以编程方式解决此问题的简单方法?由于我不关心秒数,我想我可以“四舍五入”返回的 DateTimes,但很高兴知道这是否会在边缘情况下引发任何其他问题。