added iso8601 handling functions, to avoid ugly nasty conversions
git-svn-id: https://develop.svn.wordpress.org/trunk@1372 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
f4f0868e97
commit
bec01652c4
|
@ -414,4 +414,35 @@ function get_date_from_gmt($string) {
|
||||||
return $string_localtime;
|
return $string_localtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// computes an offset in seconds from an iso8601 timezone
|
||||||
|
function iso8601_timezone_to_offset($timezone) {
|
||||||
|
// $timezone is either 'Z' or '[+|-]hhmm'
|
||||||
|
if ($timezone == 'Z') {
|
||||||
|
$offset = 0;
|
||||||
|
} else {
|
||||||
|
$sign = (substr($timezone, 0, 1) == '+') ? 1 : -1;
|
||||||
|
$hours = intval(substr($timezone, 1, 2));
|
||||||
|
$minutes = intval(substr($timezone, 3, 4)) / 60;
|
||||||
|
$offset = $sign * 3600 * ($hours + $minutes);
|
||||||
|
}
|
||||||
|
return $offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
// converts an iso8601 date to MySQL DateTime format used by post_date[_gmt]
|
||||||
|
function iso8601_to_datetime($date_string, $timezone = USER) {
|
||||||
|
if ($timezone == GMT) {
|
||||||
|
preg_match('#([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(Z|[\+|\-][0-9]{2,4}){0,1}#', $date_string, $date_bits);
|
||||||
|
if (!empty($date_bits[7])) { // we have a timezone, so let's compute an offset
|
||||||
|
$offset = iso8601_timezone_to_offset($date_bits[7]);
|
||||||
|
} else { // we don't have a timezone, so we assume user local timezone (not server's!)
|
||||||
|
$offset = 3600 * get_settings('gmt_offset');
|
||||||
|
}
|
||||||
|
$timestamp = gmmktime($date_bits[4], $date_bits[5], $date_bits[6], $date_bits[2], $date_bits[3], $date_bits[1]);
|
||||||
|
$timestamp -= $offset;
|
||||||
|
return gmdate('Y-m-d H:i:s', $timestamp);
|
||||||
|
} elseif ($timezone == USER) {
|
||||||
|
return preg_replace('#([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(Z|[\+|\-][0-9]{2,4}){0,1}#', '$1-$2-$3 $4:$5:$6', $date_string);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
Loading…
Reference in New Issue