I've been using ruby for years, but I've never had a good use for 
DateTime. Since there's so much discussion about it recently, maybe I 
could ask again, why does it exist?

I always avoid using DateTime because:

1. It looks like a Time, but behaves like a Date:

     plus_one_sec = Time.now + 1
     plus_one_day = DateTime.now + 1

If it's really meant to be a Date plus fractional values for the time of 
day, then I think it should ignore time zones and utc offset completely 
because it's ambiguous. Date does not have a zone: only when you compare 
times should you compare zones.

2. It ignores tzinfo, so moving over daylight savings time doesn't 
change the offset:

     winter_time = Time.local(2014, 3, 9)
     summer_time = winter_time + (24 * 60 * 60)

     winter_time.zone
     #=> "PST"
     summer_time.zone
     #=> "PDT"

     winter_dt = winter_time.to_datetime
     summer_dt = winter_dt + 1

     winter_dt.zone
     #=> "-08:00"
     summer_dt.zone
     #=> "-08:00"

Here, +1 adds 24 hours to the local time, when the actual difference 
should be 23 (with the offset change).

3. Its "zone" has no useful value.

     dt = DateTime.new(2012,12,6, 1, 0, 0, "-07:00")
     dt.zone # => "-07:00"
     dt.utc? # => NoMethodError: undefined method `utc?'
     dt.dst? # => NoMethodError: undefined method `dst?'
     dt.utc_offset # => NoMethodError: undefined method `utc_offset'


I'm not sure what to think of the "%s %z" patch for DateTime.strptime 
since I never use it. It makes sense that it should be consistent with 
Time, but maybe DateTime itself is wrong-headed to begin with?

Andrew Vit