Я видел несколько вопросов об этом, но не ясный ответ … strtotime () будет использовать установленный по умолчанию часовой пояс для PHP при преобразовании строки в временную метку unix.
Тем не менее, я хочу преобразовать строку в unix timestamp в UTC. Поскольку для этого нет параметров, как это можно сделать?
Строка, которую я пытаюсь преобразовать: 2011-10-27T20: 23: 39, которая уже находится в UTC. Я хочу представить это как временную метку unix также в UTC.
спасибо
Задайте часовой пояс системы по умолчанию перед strtotime
:
date_default_timezone_set('UTC'); echo strtotime('2011-10-27T20:23:39')."\n"; // Proof: print_r(getdate(strtotime('2011-10-27T20:23:39'))); // IMPORTANT: It's possible that you will want to // restore the previous system timezone value here. // It would need to have been saved with // date_default_timezone_get().
Смотрите в действии .
Я понимаю, что этот вопрос очень старый, но я нашел еще один вариант, который может быть полезен. Вместо того, чтобы устанавливать и затем возвращать часовой пояс php, вы можете указать часовой пояс как часть строки, которую вы передаете strtotime, например:
echo date_default_timezone_get(); output: America/Chicago echo gmdate('Ymd H:i:s', strtotime('2011-10-27T20:23:39')); output: 2011-10-28 01:23:39 echo gmdate('Ymd H:i:s', strtotime('2011-10-27T20:23:39 America/Chicago')); output: 2011-10-28 01:23:39 echo gmdate('Ymd H:i:s', strtotime('2011-10-27T20:23:39 UTC')); output 2011-10-27 20:23:39
Примечание. Я использую PHP 5.5.9, но это должно работать в любой версии php.