iso8601_timezone_to_offset( string $timezone ): int|float

Given an ISO 8601 timezone, returns its UTC offset in seconds.

Parameters

$timezonestringrequired
Either 'Z' for 0 offset or '±hhmm'.

Return

int|float The offset in seconds.

More Information

See  Also: ISO 8601

Source

function iso8601_timezone_to_offset( $timezone ) {
	// $timezone is either 'Z' or '[+|-]hhmm'.
	if ( 'Z' === $timezone ) {
		$offset = 0;
	} else {
		$sign    = ( str_starts_with( $timezone, '+' ) ) ? 1 : -1;
		$hours   = (int) substr( $timezone, 1, 2 );
		$minutes = (int) substr( $timezone, 3, 4 ) / 60;
		$offset  = $sign * HOUR_IN_SECONDS * ( $hours + $minutes );
	}
	return $offset;
}

Changelog

VersionDescription
1.5.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.