ok im parsing an RSS feed and it returns a great big nasty date code i want to make pretty
2005-08-20T18:06:06+00:00 is what it returns and i want to make that just appear as the date and time e.g. 20/08/2005 18:06 problem is its also an hour out so could i format it to the user's timezone due to daylight saving and stuff
Cheers
Format a date
Moderator: General Moderators
-
Faster The Chase
- Forum Newbie
- Posts: 4
- Joined: Sun Jul 24, 2005 1:26 pm
- feyd
- Neighborhood Spidermoddy
- Posts: 31559
- Joined: Mon Mar 29, 2004 3:24 pm
- Location: Bothell, Washington, USA
the T is supposed to be there. If you look down the list of parameters for date(), you'll notice the one for 'c' which will output that very timestamp format.
strtotime() may convert it to a timestamp for you, but it may not. I remember a thread that involved this format a while ago... but I can't recall the context to find it...
strtotime() may convert it to a timestamp for you, but it may not. I remember a thread that involved this format a while ago... but I can't recall the context to find it...
- raghavan20
- DevNet Resident
- Posts: 1451
- Joined: Sat Jun 11, 2005 6:57 am
- Location: London, UK
- Contact:
2005-08-20T18:06:06+00:00
you can use the split function, use "-" as the first separator
use array elements, element[0], element[1], extract first two chars of element[2]
use element[2], find the position of ":", extract two chars before that position and repeat the sam totally thrice.
or you might have to use regex.
I hope you would crack it
you can use the split function, use "-" as the first separator
use array elements, element[0], element[1], extract first two chars of element[2]
use element[2], find the position of ":", extract two chars before that position and repeat the sam totally thrice.
or you might have to use regex.
I hope you would crack it
Code: Select all
<?php
/*
* Project: MagpieRSS: a simple RSS integration tool
* File: rss_utils.inc, utility methods for working with RSS
* Author: Kellan Elliott-McCrea <kellan@protest.net>
* Version: 0.51
* License: GPL
*
* The lastest version of MagpieRSS can be obtained from:
* http://magpierss.sourceforge.net
*
* For questions, help, comments, discussion, etc., please join the
* Magpie mailing list:
* magpierss-general@lists.sourceforge.net
*/
/*======================================================================*\
Function: parse_w3cdtf
Purpose: parse a W3CDTF date into unix epoch
NOTE: http://www.w3.org/TR/NOTE-datetime
\*======================================================================*/
function parse_w3cdtf ( $date_str ) {
# regex to match wc3dtf
$pat = "/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(:(\d{2}))?(?:([-+])(\d{2}):?(\d{2})|(Z))?/";
if ( preg_match( $pat, $date_str, $match ) ) {
list( $year, $month, $day, $hours, $minutes, $seconds) =
array( $match[1], $match[2], $match[3], $match[4], $match[5], $match[6]);
# calc epoch for current date assuming GMT
$epoch = gmmktime( $hours, $minutes, $seconds, $month, $day, $year);
$offset = 0;
if ( $match[10] == 'Z' ) {
# zulu time, aka GMT
}
else {
list( $tz_mod, $tz_hour, $tz_min ) =
array( $match[8], $match[9], $match[10]);
# zero out the variables
if ( ! $tz_hour ) { $tz_hour = 0; }
if ( ! $tz_min ) { $tz_min = 0; }
$offset_secs = (($tz_hour*60)+$tz_min)*60;
# is timezone ahead of GMT? then subtract offset
#
if ( $tz_mod == '+' ) {
$offset_secs = $offset_secs * -1;
}
$offset = $offset_secs;
}
$epoch = $epoch + $offset;
return $epoch;
}
else {
return -1;
}
}
?>