ruby-changes:18706
From: akr <ko1@a...>
Date: Sun, 30 Jan 2011 16:11:02 +0900 (JST)
Subject: [ruby-changes:18706] Ruby:r30732 (trunk): * strftime.c (rb_strftime_with_timespec): %G produces 4 digits.
akr 2011-01-30 16:10:55 +0900 (Sun, 30 Jan 2011) New Revision: 30732 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30732 Log: * strftime.c (rb_strftime_with_timespec): %G produces 4 digits. Modified files: trunk/ChangeLog trunk/strftime.c trunk/test/ruby/test_time.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 30731) +++ ChangeLog (revision 30732) @@ -1,3 +1,7 @@ +Sun Jan 30 16:09:22 2011 Tanaka Akira <akr@f...> + + * strftime.c (rb_strftime_with_timespec): %G produces 4 digits. + Sun Jan 30 15:13:19 2011 Nobuyoshi Nakada <nobu@r...> * enc/emacs_mule.c (emacsmule_islead): 7bit range is also leading Index: strftime.c =================================================================== --- strftime.c (revision 30731) +++ strftime.c (revision 30732) @@ -613,7 +613,13 @@ yv = sub(yv, INT2FIX(1)); if (*format == 'G') { - FMTV('0', 1, "d", yv); + if (FIXNUM_P(yv)) { + long y = FIX2LONG(yv); + FMT('0', 0 <= y ? 4 : 5, "ld", y); + } + else { + FMTV('0', 4, "d", yv); + } } else { yv = mod(yv, INT2FIX(100)); Index: test/ruby/test_time.rb =================================================================== --- test/ruby/test_time.rb (revision 30731) +++ test/ruby/test_time.rb (revision 30732) @@ -590,6 +590,18 @@ assert_equal("02", t.strftime("%0l")) assert_equal(" 2", t.strftime("%_l")) + t = Time.utc(1,1,4) + assert_equal("0001", t.strftime("%Y")) + assert_equal("0001", t.strftime("%G")) + + t = Time.utc(0,1,4) + assert_equal("0000", t.strftime("%Y")) + assert_equal("0000", t.strftime("%G")) + + t = Time.utc(-1,1,4) + assert_equal("-0001", t.strftime("%Y")) + assert_equal("-0001", t.strftime("%G")) + # [ruby-dev:37155] t = Time.mktime(1970, 1, 18) assert_equal("0", t.strftime("%w")) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/