[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]