summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-13 09:10:44 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-13 09:10:44 +0000
commit05093ae437c8c45849c66f010ab24b32236dfb6a (patch)
tree9d011fb7c5c78d3b4bf3b8248d013269a8236f8b /lib
parent6fc17f1f7b792579360aa9eab2b3b574071bc0d6 (diff)
* lib/time.rb (Time.xmlschema): don't accept decimal dot without
fractional digits. fractional digits handling simplified. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17149 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/time.rb9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/time.rb b/lib/time.rb
index 49c07c6214..96f3945320 100644
--- a/lib/time.rb
+++ b/lib/time.rb
@@ -374,7 +374,7 @@ class Time
(-?\d+)-(\d\d)-(\d\d)
T
(\d\d):(\d\d):(\d\d)
- (\.\d*)?
+ (\.\d+)?
(Z|[+-]\d\d:\d\d)?
\s*\z/ix =~ date
year = $1.to_i
@@ -385,7 +385,7 @@ class Time
sec = $6.to_i
usec = 0
if $7
- usec = Rational(($7[1..-1] + '000000000')[0,9].to_i, 1000)
+ usec = Rational($7) * 1000000
end
if $8
zone = $8
@@ -624,6 +624,7 @@ if __FILE__ == $0
Time.xmlschema("2000-01-12T12:13:14Z"))
assert_equal(Time.utc(2001, 4, 17, 19, 23, 17, 300000),
Time.xmlschema("2001-04-17T19:23:17.3Z"))
+ assert_raise(ArgumentError) { Time.xmlschema("2000-01-01T00:00:00.+00:00") }
end
def test_encode_xmlschema
@@ -812,6 +813,10 @@ if __FILE__ == $0
assert_equal(t, Time.xmlschema("1998-12-31T23:00:00-01:00"))
end
+ def test_xmlschema_fraction
+ assert_equal(500000, Time.xmlschema("2000-01-01T00:00:00.5+00:00").tv_usec)
+ end
+
def test_ruby_talk_152866
t = Time::xmlschema('2005-08-30T22:48:00-07:00')
assert_equal(31, t.day)