Advertisements

parse_w3cdtf

Definition:
function parse_w3cdtf ( $date_str ) {}

Parameters

  • $date_str

Source code

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[7]);



		# calc epoch for current date assuming GMT

		$epoch = gmmktime( $hours, $minutes, $seconds, $month, $day, $year);



		$offset = 0;

		if ( $match[11] == '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;

	}

}

2483

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: