• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 285
  • Last Modified:

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!

$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";

Open in new window

0
SashaIsaac
Asked:
SashaIsaac
  • 4
  • 3
1 Solution
 
Ray PaseurCommented:
Not sure what the formats are for these $feed[] fields, so let's assume that they are ISO8601-compliant.

Check the man pages here:
http://www.faqs.org/rfcs/rfc2822
http://cyber.law.harvard.edu/rss/rss.html#requiredChannelElements
http://us2.php.net/manual/en/function.date.php

HTH, ~Ray
$iso_date = $feed['StartDate'] . T . $feed['vcalStartTime'];
$pubDate = date('r', strtotime($iso_date));

Open in new window

0
 
SashaIsaacAuthor Commented:
I think I was missing the use of date('r) - I checked some of the resources you linked to as well. Now I have my date and time almost correct - just off by 1 hour. I am trying to add that hour and then I will post the final solutions.

Thanks for that help! Much appreciated.
0
 
SashaIsaacAuthor Commented:
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!
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

 
Ray PaseurCommented:
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.
0
 
Ray PaseurCommented:
An ISO 8601 DATETIME with an added hour...
date('c', strtotime($iso_date . ' + 1 hour'));

Open in new window

0
 
SashaIsaacAuthor Commented:
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/$year")) ."</dc:date>\n";


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";

Open in new window

0
 
Ray PaseurCommented:
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
$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";

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now