* strftime.c (rb_strftime): fixed a bug of padding.

* test/ruby/test_time.rb: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18907 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shugo 2008-08-28 15:54:44 +00:00
Родитель 9f31706636
Коммит 77d7a80f97
3 изменённых файлов: 40 добавлений и 1 удалений

Просмотреть файл

@ -1,3 +1,9 @@
Fri Aug 29 00:53:40 2008 Shugo Maeda <shugo@ruby-lang.org>
* strftime.c (rb_strftime): fixed a bug of padding.
* test/ruby/test_time.rb: ditto.
Fri Aug 29 00:19:54 2008 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (set_pioinfo_extra): use MSVCRT's open() and close().

Просмотреть файл

@ -277,7 +277,7 @@ rb_strftime(char *s, size_t maxsize, const char *format, const struct tm *timept
if (precision <= 0) precision = (def_prec); \
if (flags & BIT_OF(LEFT)) precision = 1; \
l = snprintf(s, endp - s, \
((!padding || padding == (def_pad)) ? "%.*"fmt : "%*"fmt), \
((padding == '0' || (!padding && def_pad == '0')) ? "%.*"fmt : "%*"fmt), \
precision, val); \
if (l < 0) goto err; \
s += l; \

Просмотреть файл

@ -401,5 +401,38 @@ class TestTime < Test::Unit::TestCase
t = Time.mktime(2001, 10, 1)
assert_equal("2001-10-01", t.strftime("%F"))
t = Time.mktime(2001, 10, 1, 2, 0, 0)
assert_equal("01", t.strftime("%d"))
assert_equal("01", t.strftime("%0d"))
assert_equal(" 1", t.strftime("%_d"))
assert_equal(" 1", t.strftime("%e"))
assert_equal("01", t.strftime("%0e"))
assert_equal(" 1", t.strftime("%_e"))
assert_equal("02", t.strftime("%H"))
assert_equal("02", t.strftime("%0H"))
assert_equal(" 2", t.strftime("%_H"))
assert_equal("02", t.strftime("%I"))
assert_equal("02", t.strftime("%0I"))
assert_equal(" 2", t.strftime("%_I"))
assert_equal(" 2", t.strftime("%k"))
assert_equal("02", t.strftime("%0k"))
assert_equal(" 2", t.strftime("%_k"))
assert_equal(" 2", t.strftime("%l"))
assert_equal("02", t.strftime("%0l"))
assert_equal(" 2", t.strftime("%_l"))
t = Time.mktime(2001, 10, 1, 14, 0, 0)
assert_equal("14", t.strftime("%H"))
assert_equal("14", t.strftime("%0H"))
assert_equal("14", t.strftime("%_H"))
assert_equal("02", t.strftime("%I"))
assert_equal("02", t.strftime("%0I"))
assert_equal(" 2", t.strftime("%_I"))
assert_equal("14", t.strftime("%k"))
assert_equal("14", t.strftime("%0k"))
assert_equal("14", t.strftime("%_k"))
assert_equal(" 2", t.strftime("%l"))
assert_equal("02", t.strftime("%0l"))
assert_equal(" 2", t.strftime("%_l"))
end
end