Skip to content

Commit cde1941

Browse files
committed
Revert part of [17920]. Support for empty tz must remain. Props johnjamesjacoby. fixes #17448
git-svn-id: https://develop.svn.wordpress.org/trunk@17958 602fd350-edb4-49c9-b593-d223f7449a82
1 parent c220a69 commit cde1941

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

wp-includes/formatting.php

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1588,7 +1588,8 @@ function _wp_iso_convert( $match ) {
15881588
*
15891589
* Requires and returns a date in the Y-m-d H:i:s format. Simply subtracts the
15901590
* value of the 'gmt_offset' option. Return format can be overridden using the
1591-
* $format parameter.
1591+
* $format parameter. The DateTime and DateTimeZone classes are used to respect
1592+
* time zone differences in DST.
15921593
*
15931594
* @since 1.2.0
15941595
*
@@ -1600,13 +1601,19 @@ function _wp_iso_convert( $match ) {
16001601
function get_gmt_from_date($string, $format = 'Y-m-d H:i:s') {
16011602
preg_match('#([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})#', $string, $matches);
16021603
$tz = get_option('timezone_string');
1603-
date_default_timezone_set( $tz );
1604-
$datetime = new DateTime( $string );
1605-
$datetime->setTimezone( new DateTimeZone('UTC') );
1606-
$offset = $datetime->getOffset();
1607-
$datetime->modify( '+' . $offset / 3600 . ' hours');
1608-
$string_gmt = gmdate($format, $datetime->format('U'));
1609-
date_default_timezone_set('UTC');
1604+
if ( $tz ) {
1605+
date_default_timezone_set( $tz );
1606+
$datetime = new DateTime( $string );
1607+
$datetime->setTimezone( new DateTimeZone('UTC') );
1608+
$offset = $datetime->getOffset();
1609+
$datetime->modify( '+' . $offset / 3600 . ' hours');
1610+
$string_gmt = gmdate($format, $datetime->format('U'));
1611+
1612+
date_default_timezone_set('UTC');
1613+
} else {
1614+
$string_time = gmmktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]);
1615+
$string_gmt = gmdate($format, $string_time - get_option('gmt_offset') * 3600);
1616+
}
16101617
return $string_gmt;
16111618
}
16121619

0 commit comments

Comments
 (0)