summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-25 14:47:33 +0000
committertadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-25 14:47:33 +0000
commit3e75a0a7638887519610ca4c96ee7b23e4592d9b (patch)
treec673f117dd1563161d6ac666d970bd7b0a112496
parent9839d737c25e1a787bc8c45774cbb235dedc8507 (diff)
* lib/date/format.rb(strftime): can print with given arbitrary
precision. * lib/date/format.rb(strftime): optional flags and filed width should also affect %[nt]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--lib/date/format.rb12
2 files changed, 16 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 0024654fb8..a5d9cad7bf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Mon Aug 25 23:38:17 2008 Tadayoshi Funaba <tadf@dotrb.org>
+
+ * lib/date/format.rb(strftime): can print with given arbitrary
+ precision.
+
+ * lib/date/format.rb(strftime): optional flags and filed width
+ should also affect %[nt].
+
Mon Aug 25 23:01:17 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
* compile.c (defined_expr): default defined? should return
diff --git a/lib/date/format.rb b/lib/date/format.rb
index 46d2147b89..baba8dcbf6 100644
--- a/lib/date/format.rb
+++ b/lib/date/format.rb
@@ -257,13 +257,17 @@ class Date
when 'j'; emit_n(yday, 3, f)
when 'k'; emit_a(hour, 2, f)
when 'L'
- emit_n((sec_fraction / MILLISECONDS_IN_SECOND).floor, 3, f)
+ w = f[:w] || 3
+ u = 10**w
+ emit_n((sec_fraction * u).floor, w, f)
when 'l'; emit_a((hour % 12).nonzero? || 12, 2, f)
when 'M', 'OM'; emit_n(min, 2, f)
when 'm', 'Om'; emit_n(mon, 2, f)
when 'N'
- emit_n((sec_fraction / NANOSECONDS_IN_SECOND).floor, 9, f)
- when 'n'; "\n"
+ w = f[:w] || 9
+ u = 10**w
+ emit_n((sec_fraction * u).floor, w, f)
+ when 'n'; emit_a("\n", 0, f)
when 'P'; emit_ad(strftime('%p').downcase, 0, f)
when 'p'; emit_au(if hour < 12 then 'AM' else 'PM' end, 0, f)
when 'Q'
@@ -281,7 +285,7 @@ class Date
else
emit_a(strftime('%H:%M:%S'), 0, f)
end
- when 't'; "\t"
+ when 't'; emit_a("\t", 0, f)
when 'U', 'W', 'OU', 'OW'
emit_n(if c[-1,1] == 'U' then wnum0 else wnum1 end, 2, f)
when 'u', 'Ou'; emit_n(cwday, 1, f)