SashaIsaac
asked on
Formatting time in an RSS feed
I am creating a custom RSS feed using the <dc:date> field to display event dates. The dates and times are split up in the database and I am having troubles getting them to display properly in the feed. The StartDate is fine - I just need to add the vcalStartTime field so the time shows up. Or have no time at all show up.
I think I need to somehow use the $newdate2 value (see code snippet) but when I add it to my $date I get the issue where all dates and times are set to Dec 31 1969 (so its wrong). If I remove the time value from the date() I still get a 5:00 AM time on everything.
Any suggestions are appreciated!
Thanks!
I think I need to somehow use the $newdate2 value (see code snippet) but when I add it to my $date I get the issue where all dates and times are set to Dec 31 1969 (so its wrong). If I remove the time value from the date() I still get a 5:00 AM time on everything.
Any suggestions are appreciated!
Thanks!
$newdate2 = $feed['StartDate'] . T . $feed['vcalStartTime'] .Z ;
$date = explode("-", $feed['StartDate']);
list($year, $month, $day) = $date;
echo "<dc:date>" . date("D, j M Y H:i:s T", strtotime("$month/$day/$year")) ."</dc:date>\n";
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Although I think I need to check my formatting of my date somewhere - when I go to validate it says dc:date needs to be the W3CDTF format (which I believe is ISO8601 too). So I'll check into why that is not in that format. Thanks!
Yes, the W3CDTF is ISO8601-compliant. I think that is PHP date('c'); That is different from the RSS standard for pubDate.
One possibility if the time is off by an hour is that your serer is in a different timezone. That happens to me. I am in Washington, DC and my servers are in Chicago.
One possibility if the time is off by an hour is that your serer is in a different timezone. That happens to me. I am in Washington, DC and my servers are in Chicago.
An ISO 8601 DATETIME with an added hour...
date('c', strtotime($iso_date . ' + 1 hour'));
ASKER
I hadn't added the 'c' to the other line in my code:
echo "<dc:date>" . date("D, j M Y H:i:s T", strtotime("$month/$day/$ye ar")) ."</dc:date>\n";
I am including the solution - thanks again for the assistance!
echo "<dc:date>" . date("D, j M Y H:i:s T", strtotime("$month/$day/$ye
I am including the solution - thanks again for the assistance!
$iso_date = $feed['StartDate'] . T . $feed['vcalStartTime'] ;
$newdate3 = date('c',strtotime($iso_date . '+ 1 hour' ));
//in the channel/item
echo "<dc:date>" . date("c", strtotime("$newdate3")) ."</dc:date>\n";
Just a thought, ... $newdate3 is already in date('c') format so you do not need to use strtotime() and re-convert it.
Thanks for the points - it's a great question, ~Ray
Thanks for the points - it's a great question, ~Ray
$iso_date = $feed['StartDate'] . T . $feed['vcalStartTime'] ;
$newdate3 = date('c',strtotime($iso_date . '+ 1 hour' ));
//in the channel/item
echo "<dc:date>$newdate3</dc:date>\n";
ASKER
Thanks for that help! Much appreciated.