Поддержка Проблемы и решения Проблема с GMT/UTC

  • Проблема в функции:

    	function mje_get_range_of_date($first, $last, $step = '+1 day', $format = 'Y/m/d') {
    	date_default_timezone_get(get_option('timezone_string'));
            date_default_timezone_set(‘UTC’);
           
    		$dates = array();
    		$current = strtotime($first);
    		$last = strtotime($last);
    		while ($current <= $last) {
    			$dates[] = date($format, $current);
    			$current = strtotime($step, $current);
    		}
    
    		return $dates;
    	}

    Если ставлю вместо:

    	date_default_timezone_get(get_option('timezone_string'));
            date_default_timezone_set(‘UTC’);

    это:

    
            date_default_timezone_set('Europe/Moscow');

    все в порядке.

    Иначе ошибки дебаггера на сайте на эти строки:
    Warning: date_default_timezone_get() expects exactly 0 parameters, 1 given in
    Warning: Use of undefined constant ‘UTC’ — assumed ‘‘UTC’’ (this will throw an Error in a future version of PHP) in
    Warning: date_default_timezone_get() expects exactly 0 parameters, 1 given in
    Warning: Use of undefined constant ‘UTC’ — assumed ‘‘UTC’’ (this will throw an Error in a future version of PHP) in

    Кто сталкивался? Хочется чтобы GMT/UTC работало у всех пользователей как положено.

    • Тема изменена 2 года назад пользователем rsl89.
Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    
    date_default_timezone_get(get_option('timezone_string'));
    date_default_timezone_set(‘UTC’);
    

    В чём смысл этих строк?

    У date_default_timezone_get() нет параметров, get_option() там ни к чему. Но если возвращаемое функцией значение нигде не используется, то зачем она здесь?

    В date_default_timezone_set() неверно указаны кавычки, должно быть 'UTC'. Но в WordPress и так все операции с датами выполняются в UTC, зачем эта строка — тоже непонятно.

    Использовать date_default_timezone_set() без особой необходимости настоятельно не рекомендуется.

    См. также: «Date/Time component improvements in WordPress 5.3».

    Автор rsl89

    (@rsl89)

    Значит я в принципе могу выключить все эти три строчки:

    //date_default_timezone_get(get_option('timezone_string'));
    //date_default_timezone_set('UTC');
    //date_default_timezone_set('Europe/Moscow');

    для чего они там сложно сказать, это готовый шаблон.

    Поэтому хочу услышать Ваше экспертное мнение.

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Проблема с GMT/UTC» закрыта для новых ответов.