Rails ActiveSupport adds a to_datetime function to the String class. But, for some reason, it doesn't handle timezone specifications in date strings, nor does it handle second fractions. For example, one consequence of this is that a standard XML dateTime representation isn't parsed correctly:
'2008-08-04T13:10:42.312+03:00'
Would get parsed to the date August 4th, 2008, 13:10:42 PM, in UTC, with no second fraction (which is obviously wrong)
I've encountered this problem when using the soap4r library with Rails. soap4r looks for a to_datetime method as a first option to parse dates in SOAP responses (presumably since Ruby 1.9 supports such methods, I'm not very familiar with 1.9). Since Rails provides this for the String class, soap4r uses the Rails implementation, which loses information and provides incorrect dates.
I've managed to get around this by overriding Rails' to_datetime with a method that does it correctly, but this seems like an ugly solution.
Anyone know why this is the chosen implementation? It seems to me that implementing support for timezones and second fractions is trivial since DateTime.parse already does that very well...
Thanks, Yair Halevi (Spock)