[prev in list] [next in list] [prev in thread] [next in thread]
List: ruby-core
Subject: Re: [ ruby-Bugs-2019 ] Time.parse fails at different times than DateTime.parse
From: Tanaka Akira <akr () m17n ! org>
Date: 2005-06-16 2:19:49
Message-ID: 87ekb3hwla.fsf () m17n ! org
[Download RAW message or body]
In article <200506112006.j5BK6UTH016571@rubyforge.org>,
noreply@rubyforge.org writes:
> Bugs item #2019, was opened at 2005-06-11 13:06
> I am pretty new to Ruby, and I could have inappropriate expectations, but I would \
> expect that Time.parse and DateTime.parse would parse the same String in a similar \
> fashion...most importantly, fail on the same dates. Here is my example:
>
> require 'time'
> require 'date'
>
> puts Time.parse("4/12/2005")
> puts Time.parse("4/31/2005")
> puts DateTime.parse("4/12/2005")
> puts DateTime.parse("4/31/2005")
>
>
> So, there are not 31 days in April, and Time parses it fine but returns May 1. \
> DateTime fails on the parsing of the date. I would have expected Time to also \
> fail, but alas it does not. But, to make this more confusing, Time.parse will fail \
> on the date "4/32/2005". So somehow there are some dates which just don't make \
> sense at all, and some dates which "could" make sense, but may not for a certain \
> month.
> Anyhow, this is rather confusing, and "non-intuitive" in my opinion. This may be \
> deemed as an invalid bug, but I would call the current behavior "expected". Thanks \
> for the consideration.
Although I'm not sure about 4/31/2005, I know an example which
Time.parse and DateTime.parse should behave differently.
% TZ=right/Asia/Tokyo ruby -rtime -rdate -e 'p Time.parse("Fri Jan 1 08:59:60 1999 \
JST")' Fri Jan 01 08:59:60 JST 1999
% TZ=right/Asia/Tokyo ruby -rtime -rdate -e 'p DateTime.parse("Fri Jan 1 08:59:60 \
1999 JST")'
/home/akr/ruby/lib/ruby/1.9/date.rb:1168:in `civil': invalid date (ArgumentError)
from /home/akr/ruby/lib/ruby/1.9/date.rb:1211:in `new_with_hash'
from /home/akr/ruby/lib/ruby/1.9/date.rb:1253:in `parse'
from -e:1
The time parsed is a leap second. Time.parse succeeds since Time
supports leap seconds in my environment. DateTime.parse failed since
DateTime doesn't support that.
So, it is impossible to be consistent perfectly.
--
Tanaka Akira
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic