get_gmt_from_date

Переводит локальную дату сайта (исходя из настроек временной зоны) в часовой пояс GMT/UTC. Принимает дату в формате Y-m-d H:i:s.

Подразумевается, что будет передаваться не GMT дата, а локальная дата.

Формат возвращаемой даты может быть переопределен во втором параметре $format. Но передаваемая дата все равно должна быть в формате Y-m-d H:i:s.

Переводит дату на основе настройки сайта timezone_string (содержит Asia/Tashkent). Если её нет, то используется настройка gmt_offset (содержит 5, 6, -3, -4…).

Чтобы, наоборот, получить локальную дату из GMT, используйте get_date_from_gmt()
✈ 1 раз = 0.000157с = быстро | 50000 раз = 2.98с = быстро

Хуков нет.

Возвращает

Строку. GMT дату которую необходимо конвертировать.

Использование

$date = get_gmt_from_date( $string, $format );
$string(строка) (обязательный)
Дата которую нужно конвертировать.
$format(строка)
Формат возвращаемой строки. Возможные форматы
По умолчанию: ‘Y-m-d H:i:s’

Примеры

#1 Конвертация локальной даты в GMT

Пример справедлив, если wp-admin/options-general.php выбран часовой пояс UTC+4.

<?php
function get_gmt_from_date( $string, $format = 'Y-m-d H:i:s' ) {
	$tz = get_option( 'timezone_string' );
	if ( $tz ) {
		$datetime = date_create( $string, new DateTimeZone( $tz ) );
		if ( ! $datetime ) {
			return gmdate( $format, 0 );
		}
		$datetime->setTimezone( new DateTimeZone( 'UTC' ) );
		$string_gmt = $datetime->format( $format );
	} else {
		if ( ! 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 ) ) {
			$datetime = strtotime( $string );
			if ( false === $datetime ) {
				return gmdate( $format, 0 );
			}
			return gmdate( $format, $datetime );
		}
		$string_time = gmmktime( $matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1] );
		$string_gmt = gmdate( $format, $string_time - get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
	}
	return $string_gmt;
}