この動作が意図されているかどうかはわかりませんが、少し奇妙に思えます。How do you get DateTime.parse to return a time in your time zone?のコードを使用しています。
require 'date'
estHoursOffset = +10 # Brisbane/Australia
estOffset = Rational(estHoursOffset, 24)
場合によっては、返される DateTime が 1 秒早くなります。
(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 を「切り上げる」ことができると思いますが、これがエッジケースで他の問題を引き起こす可能性があるかどうかを知っておくとよいでしょう.