У меня есть веб-сайт, на котором я настраиваю встречи для спа-центра, расположенного в западной части США, например, время PST.
Когда пользователь выбирает место, скажем, 10:00 AM @ 20 марта 2010 г.объект date, который создается со стороны клиента на моем рабочем столе и использует время EDT:
отметка времени: 1395324000000
utc строка: чт 20 марта 2014 10:00:00 GMT-0400 (EDT)
Мне нужно сохранить это на стороне сервера.В настоящее время я передаю метку времени из JS в PHP через XHR и делю на 1000:
URL-адрес ajax: ajax.php? Timestamp = 1395324000000
код php:
$time = $_GET['timestamp'] / 1000;
Поскольку мой часовой пояс по умолчанию установлен вручную на America/New_York
, а мое время на стороне клиента указано в EDT, они согласованы и поэтому отображается правильное время:
echo date('M d Y H:i:s', $time); // Mar 20 2014 10:00:00
Но в идеале я думал, что долженна самом деле нужно установить дату на стороне сервера как America / Los_Angeles .. однако это заставит echo date
отображать неправильную дату, так как это будет PST
, а не EDT
больше:
date_default_timezone_set('America/Los_Angeles');
Mar 20 2014 07:00:00
Теперь стало 7:00, когда пользователь первоначально выбрал 10:00, и это, очевидно, приводит к путанице ... Мне нужно, чтобы оно было 10:00, если пользователь выбрал 10:00.
Еще одно мое беспокойство заключается в том, что если пользовательское время пользователя не соответствует EDT?Разве это не будет соответствовать America/New_York
или America/Los_Angeles
?
Должен ли я делать что-то вроде сохранения строки UTC через .toUTCString
в Javascript, а затем сохранения времени в UTC, и установить часовой пояс по умолчанию на UTC, а затем преобразовать его в время PST, когда мне нужно отобразитьВремя PST?
Кстати , я не могу использовать DateTimeZone
или DateTime
, так как я имею дело с php <5.3 </p>