У меня есть переменная php, скажем $expTime
(которая имеет unixtime say-1359683953). Я хочу отобразить эту переменную на стороне клиента (в правильном формате времени в соответствии с его местным временем). Я так растерялся между UTC, GMT, DST. Может ли кто-нибудь предложить решение для этого, используя php или javascript, пожалуйста.
когда я использую echo date('h:i M d/y',$expTime)
это показывает мне неправильное время.
Как я сохраняю время для базы данных:
var exp_day= parseInt($("#exp_day").val());
var exp_hrs= parseInt($("#exp_hrs").val());
var exp_min= parseInt($("#exp_min").val());
var exp_time = (exp_day*24*60*60) + (exp_hrs*60*60) + (exp_min*60) ;
то я отправил exp_time с помощью ajax в файл php –
$expTime = time() + $_POST["exp_time"];
То, что я получаю из базы данных, – $ expTime. Этот $ expTime я хочу отобразить его на всей клиентской системе в соответствии с местным часовым поясом (также, гарантируя сохранение дневного света)
Значения времени UNIX обычно составляют UTC секунд с эпохи. Значения времени Javascript – это UTC миллисекунды с той же эпохи. Метод ECMA-262 Date.prototype.toString автоматически генерирует строку, представляющую локальное время, и учитывает переход на летнее время, если это применимо.
Вы также можете использовать методы Date для создания собственной форматированной строки, а также возвращать локальные значения времени и даты. Существуют также методы UTC, если вы хотите работать в UTC.
Чтобы сделать это на клиенте, просто укажите значение времени UTC с сервера, а затем все, что вам нужно в javascript, это:
var timeValue = 1359683953; // assume seconds var date = new Date(timeValue * 1000); // convert time value to milliseconds alert(date); // Fri 01 Feb 2013 11:59:13 GMT+1000
Используйте DateTime с часовыми поясами :
$datetime = new DateTime('@1359683953'); echo $datetime->format('h:i M d/y') . "<br>"; $datetime->setTimezone(new DateTimeZone('America/Los_Angeles')); echo $datetime->format('h:i M d/y');
Смотрите это в действии