змусити php strtotime використовувати UTC

Я бачив кілька запитань про це, але не чітку відповідь ... strtotime() буде використовувати стандартний часовий пояс для PHP при перетворенні рядка в unix timestamp.

Проте, я хочу перетворити рядок у unix timestamp у UTC. Оскільки для цього немає параметрів, як це можна зробити?

Рядок, який я намагаюся конвертувати, це: 2011-10-27T20: 23: 39, що вже в UTC. Я хотів би представити це як часову мітку UNIX також у UTC.

Дякую

6
Також розгляньте можливість використання new DateTimeZone ("UTC"); , див. stackoverflow.com/a/34651091/1066234
додано Автор Kai Noack, джерело

2 Відповіді

Я розумію, що це питання дуже старе, але я знайшов інший варіант, який може бути корисним. Замість того, щоб встановити, а потім повернути часовий пояс PHP, можна вказати часовий пояс як частину рядка, який ви переходите до strtotime так:

echo date_default_timezone_get();
output: America/Chicago

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39'));
output: 2011-10-28 01:23:39

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 America/Chicago'));
output: 2011-10-28 01:23:39

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 UTC'));
output 2011-10-27 20:23:39

Примітка: я на PHP 5.5.9, але це має працювати в будь-якій версії php.

10
додано
Це простіше, але ви повинні стежити за введенням користувача. Якщо ви просто надсилаєте те, що користувач набрав, ви ніколи не знаєте, чи будуть вони включати часову зону або щось, що зіпсує рядок.
додано Автор Paul Hutchinson, джерело
Ця відповідь набагато краще прийнятої відповіді. +1
додано Автор Druckles, джерело

Перед тим, як зробити виклик 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().

See it in action.

6
додано
Якби це викликало проблеми з рештою сценарію, хоча? Я думаю, я міг би повернути його назад?
додано Автор Brian, джерело
@Brian: Це може викликати проблеми, так. Але до тих пір, поки ви встановите його назад, проблем не буде.
додано Автор Jon, джерело
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php