From: Masaki Suketa Date: 2001-12-22T11:14:37+09:00 Subject: [ruby-dev:15528] time_plus in ruby 1.7 助田です。 既知の問題だったらすいません。 ruby 1.7.2(2001-12-21) で Time.now - 1 Time.now + 1 などが out of Time range になってしまいます。 time.cのtime_plus や time_minusのチェックの意図を よくわかってないのですが、こんな感じですか? # modfの戻り値のチェックが必要なのかどうかも良くわかりませんが # はずしてみました。 --- time.c.org Fri Dec 21 20:02:56 2001 +++ time.c Sat Dec 22 10:22:36 2001 @@ -952,7 +952,8 @@ } v = NUM2DBL(time2); d = modf(v, &f); - if (f != (double)sec || d >= 1.0 || d <= -1.0) { + sec = (time_t)f; + if (f != (double)sec) { rb_raise(rb_eRangeError, "time + %f out of Time range", v); } #ifndef NEGATIVE_TIME_T @@ -998,7 +999,8 @@ } v = NUM2DBL(time2); d = modf(v, &f); - if (f != (double)sec || d >= 1.0 || d <= -1.0) { + sec = (time_t)f; + if (f != (double)sec) { rb_raise(rb_eRangeError, "time - %f out of Time range", v); } #ifndef NEGATIVE_TIME_T