PHP & Javascript & ASP: Format ATOM Date

Filed under: Quick Code — Written by Chrissy on Monday, April 24th, 2006 @ 5:26 am

I'm surprised this isn't built in.. I had the hardest time finding how to convert ATOM time (found in many RSS feeds) to something human-readable. The cleanest solution I have found thus far is this:

<?php
$atomdate = '2006-04-22T10:00:00.000Z';
$datetime = strtotime(substr($atomdate, 0, 10) . ' ' . substr($atomdate, 11, 8 ));
print date('m.d.y',$datetime);
?>

That outputs "04.22.06" but you can use any of the formats available from php date().

Here is basically the same routine, but this time in Javascript

var atomdate = items[n].getElementsByTagName('published').item(0).firstChild.data;
var itemPubDateDay = atomdate.substr(0, 10);
var itemPubDateTime = atomdate.substr(11, 8 );
print itemPubDateDay;

And this time in ASP

<%
atomdate = "2006-04-22T10:00:00.000Z"
dateandtime = mid(atomdate, 1, 10) & " " & mid(atomdate, 12, 8 )
response.write formatdatetime(dateandtime)
%>
9 Comments   -
  • Comment by TK | May 5, 2006 @ 4:54 pm

    Thanks for the code! But can you please explain how the PHP code can be used? I am very new to ATOM, but I am trying to display it on a website and I really, really, hate the date format. Plus, I can't figure out where and how to put the PHP code you provided above.

    Thanks in advance.

  • Comment by Chrissy | May 10, 2006 @ 10:39 pm

    Hey TK,
    Here is an example of how you can parse ATOM XML in PHP.

    Hope that helps,
    Chrissy

  • Comment by Maltpress | September 3, 2006 @ 4:25 am

    Thank you - struggling with learning PHP and trying to parse my blog on my website. Had it all working except the date and stumbled on this via Google. With a bit of thought, a tiny hint of swearing, and a little sweat, I've not only got it working, I've also learnt a lot more about PHP...

  • Comment by Deano | May 9, 2007 @ 7:58 am

    ahh thanks!!

  • Comment by Jamie | July 20, 2007 @ 10:15 am

    Thank you so much for your help! This is exactly what I've been looking for! It took me a while to find it too, I guess I should've typed 'php format atom date' into the search and then it would've been easier for me. I was trying things like php date help!!!!!!!!!!
    :)

  • Comment by Duncan | December 28, 2007 @ 4:16 pm

    Thank you for saving me time and effort!

  • Comment by Timmy | January 8, 2008 @ 1:03 pm

    Thanks. Perfect.

  • [...] netnerds.net has a great post on how to convert an ATOM date to a normal PHP date. I found it very useful as I was trying to do this for my sites www.stormwarriorsmovie.com and www.roguebargains.com and it worked great! [...]

  • Comment by Philip | June 8, 2009 @ 10:58 am

    you can now use the shorter method of:

    echo date( DateTime::RFC822, strtotime('2009-05-12T16:46:21.000Z') );

    For constants other than DateTime::RFC822 see:
    http://uk2.php.net/manual/en/class.datetime.php

Leave your comment