diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | test/ruby/test_time.rb | 10 | ||||
-rw-r--r-- | time.c | 5 |
3 files changed, 19 insertions, 0 deletions
@@ -1,3 +1,7 @@ +Mon Feb 15 22:18:49 2010 Tanaka Akira <akr@fsij.org> + + * time.c (time_add): propagate fixed time offset. + Mon Feb 15 17:42:20 2010 NARUSE, Yui <naruse@ruby-lang.org> * signal.c (USE_SIGALTSTACK): NetBSD can't use sigaltstack(2) diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb index 73afed3902..c583b4e873 100644 --- a/test/ruby/test_time.rb +++ b/test/ruby/test_time.rb @@ -27,6 +27,16 @@ class TestTime < Test::Unit::TestCase assert_equal(Time.utc(2000, 3, 21, 3, 30) + (-3 * 3600), Time.utc(2000, 3, 21, 0, 30)) assert_equal(0, (Time.at(1.1) + 0.9).usec) + + assert((Time.utc(2000, 4, 1) + 24).utc?) + assert(!(Time.local(2000, 4, 1) + 24).utc?) + + t = Time.new(2000, 4, 1, 0, 0, 0, "+01:00") + 24 + assert(!t.utc?) + assert_equal(3600, t.utc_offset) + t = Time.new(2000, 4, 1, 0, 0, 0, "+02:00") + 24 + assert(!t.utc?) + assert_equal(7200, t.utc_offset) end def test_time_subt() @@ -2909,6 +2909,11 @@ time_add(struct time_object *tobj, VALUE offset, int sign) GetTimeval(result, tobj); TIME_SET_UTC(tobj); } + else if (TIME_FIXOFF_P(tobj)) { + VALUE off = tobj->vtm.utc_offset; + GetTimeval(result, tobj); + TIME_SET_FIXOFF(tobj, off); + } return result; } |