views:

24

answers:

1

I have a timestamp that is in UTC

"2010-10-25 23:48:46 UTC"

I need to convert it into ISO 8601

"2010-10-29 06:09Z"

The documentation is confusing as hell - what is the easiest way to do that?

+2  A: 

I think you're trying to trick us.

The input date to your question is the 25th of October, 2010, whilst the output is the 29th of October, 2010. Well played!

Continuing on this nit-picking thread: your times are also completely different and you're missing the seconds from the output time.

Now for the true answer.

A little factoid first though: the ISO 8601 output in Ruby is similar to the "Combined date and time" output from ISO 8601's Wikipedia page.

You've got a string and so you'll need to convert it into a Time object which you can do with to_time. Then it's simply a matter of calling iso8601 on that object to get the ISO 8601 version:

"2010-10-25 23:48:46 UTC".to_time.iso8601

The to_time method is courtesy of Rails, whilst the iso8601 is courtest of Ruby's standard library.

Ryan Bigg
Good answer, but I didn't get the first part (was that supposed to be humor?)
Mark Thomas
Damn! you saw through my plot to trick you folks. =P Thanks for the great answer, i wonder why they do not just write that in the documentation!
ming yeow
@Mark Thomas: yes it was supposed to be humour. He gave an input and an output time that wouldn't match, ever. Tricksie little hobbit!
Ryan Bigg