Advertisements

iso8601_to_datetime

Definition:
function iso8601_to_datetime($date_string, $timezone = 'user') {}

Converts an iso8601 date to MySQL DateTime format used by post_date[_gmt].

Parameters

  • string $date_string: Date and time in ISO 8601 format http://en.wikipedia.org/wiki/ISO_8601.
  • string $timezone: Optional. If set to GMT returns the time minus gmt_offset. Default is ‘user’.

Return values

returns:The date and time in MySQL DateTime format – Y-m-d H:i:s.

Source code

function iso8601_to_datetime($date_string, $timezone = 'user') {

	$timezone = strtolower($timezone);



	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_option('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);



	} else if ($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);

	}

}

2077

Advertisements

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: