Прием международного ввода даты и времени в php - PullRequest
0 голосов
/ 18 января 2012

В настоящее время я добавляю поддержку интернационализации в систему, написанную на PHP. Все даты теперь хранятся в формате UTC и отображаются в соответствии с индивидуальными настройками локализации пользователя.

Однако, когда пользователь вводит время даты (например, чтобы указать определенное временное окно), введенное ими время даты интерпретируется как время в формате UTC, а не как местное время. Чтобы завершить интернационализацию, система должна предположить, что введенное пользователем время и дата относятся к их местному времени.

Как мне преобразовать строку даты (то есть «ГГГГ-ММ-ДД ЧЧ: ММ») в метку времени Unix для правильной локализации?

  • Дальнейшее уточнение - Все даты в базе данных = метки времени UTC Все HTML-страницы отображают местное время пользователей (как определено в их настройках) HTML-форма имеет дату, которая по умолчанию соответствует текущему местному времени PHP должен обрабатывать это время как локальное, а не UTC PHP должен преобразовать эту локальную дату в UTC

1 Ответ

2 голосов
/ 18 января 2012

Если вы знаете часовой пояс пользователя, который он предположительно выбрал в настройках где-то:

$timezone = new DateTimeZone($usersTimezone);
$datetime = new DateTime('2012-01-18 20:00:00', $timezone);
echo $datetime->getTimestamp();

Для этого требуется последняя версия PHP с DateTime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...