У меня есть несколько скриптов php на хостинге, но время хостинга отличается от моего местного времени (GMT + 8). Как установить правильный скрипт time () на GMT + 8?
Когда я использую:
<?
echo time(); //it show me the hosting time;
?>
У меня есть несколько скриптов php на хостинге, но время хостинга отличается от моего местного времени (GMT + 8). Как установить правильный скрипт time () на GMT + 8?
Когда я использую:
<?
echo time(); //it show me the hosting time;
?>
time()
всегда будет возвращать количество секунд с начала эпохи. Приведенный ниже код напечатает одно и то же дважды.
date_default_timezone_set('Europe/London');
echo time();
date_default_timezone_set('America/Cuiaba');
echo time();
Концепция Unix Timestamp не несет информации о часовом поясе по своей задумке. Данная временная метка всегда одинакова независимо от часового пояса. (Количество секунд с 1970-01-01 00:00:00 UTC) Если вы хотите выразить метку времени с учетом часового пояса, вы скорректируете полученную дату со смещением текущего часового пояса.
Таким образом, при использовании параметра формата 'c' для PHP date
(который отражает информацию о часовом поясе) вы увидите другое представление той же метки времени.
date_default_timezone_set('Europe/London');
echo time();
echo date('c')
date_default_timezone_set('America/Cuiaba');
echo time();
echo date('c');
Выведет:
1384259474
2013-11-12T12:31:14+00:00
1384259474
2013-11-12T09:31:14-03:00
time
НЕ будет учитывать часовой пояс. Вы должны использовать функцию date
. Вы не хотите, чтобы time
вел себя иначе. Вы можете произвести любые необходимые вычисления, а затем отобразить результат с информацией о часовом поясе.
- person marekful; 12.11.2013
time()
учитывать часовой пояс.
- person marekful; 12.11.2013
time()
или даже MySQL NOW()
. Это сохранится в формате UTC. Теперь, когда вы читаете дату создания записи, она отображается в формате UTC, но вы можете отображать ее в любом часовом поясе, который вам просто необходим.
- person marekful; 12.11.2013
timestamp
не заботится о часовых поясах). Часовые пояса играют роль при представлении метки времени в удобочитаемом формате.
- person marekful; 12.11.2013
date('c', $mystoredseconds)
. Это будет отображаться в часовом поясе системы. Используйте date_default_timezone_set()
в своем PHP-коде, чтобы изменить часовой пояс PHP, тогда, когда вы повторите date('c', $mystoredseconds)
, он напечатает дату в другом часовом поясе.
- person marekful; 12.11.2013
date_default_timezone_set('Asia/Hong_Kong'); $time = strtotime(date('c', time())); echo date('d-m-Y H:m:s',$time);
- person Mando Madalin; 12.11.2013
Ваше предположение неверно:
int time ( void )
Возвращает текущее время в секундах, прошедшее с начала эпохи Unix (1 января 1970 г., 00:00:00 по Гринвичу).
Эпоха Unix - это фиксированный момент времени. Если вы действительно получаете недопустимую метку времени, ваш хостинг-провайдер не позаботился о настройке часов сервера.
Если вы хотите правильно обрабатывать дату с учетом часового пояса, я предлагаю вам узнать о DateTime класс и друзья и:
Используйте именованные часовые пояса (Europe/Madrid
) вместо смещения UTC (+01:00
), поскольку они учитывают летнее время.
Установите часовой пояс вашего приложения по умолчанию, чтобы вам не приходилось указывать его каждый раз:
date_default_timezone_set("Europe/Helsinki");
Никогда не выполняйте математику даты самостоятельно (например, не добавляйте вручную 86400 секунд, чтобы увеличить день).
echo time()
неверен, во что, очевидно, трудно поверить.
- person Álvaro González; 12.11.2013
Вы должны установить местное время в php
функция date_default_timezone_set
Список поддерживаемых часовых поясов
Пример:
date_default_timezone_set("America/Fortaleza");
echo time(); // Local Time in America/Fortaleza
Добавьте 28800 (8 часов в секундах) к выходному значению time ()
<?php echo (time()+28800); ?>
Я не уверен, но time () возвращает метку времени, которая эквивалентна GMT, поэтому добавление метки времени 8 часов даст вам GMT + 8. Точно так же вы можете даже вычесть время
Вы можете использовать функцию date_default_timezone_set (), например
date_default_timezone_set('Asia/Dhaka');
time()
всегда будет возвращать количество секунд с начала эпохи без настройки часового пояса.
- person marekful; 12.11.2013
time()
возвращает метку времени UNIX, не зависящую от часового пояса, какой именно результат вы ожидаете и что получите? - person deceze♦   schedule 12.11.2013time()
отличается от того, что вы ожидаете в конкретных терминах. Ваш вопрос расплывчатый, и вы должны доказать, что то, что работает для всех остальных, не работает для вас. Мойtime()
здесь в настоящее время дает мне1384260111
. Чего еще вы ожидаете и почему? - person deceze♦   schedule 12.11.2013date()
?! Тогда это совсем другая проблема. - person deceze♦   schedule 12.11.2013date_default_timezone_set()
, и вызов функцииdate()
выведет правильное смещение. - person Glavić   schedule 12.11.2013date_default_timezone_set('Asia/Hong_Kong'); $time = strtotime(date('c', time())); echo date('d-m-Y H:m:s',$time);
- person Mando Madalin   schedule 12.11.2013date_default_timezone_set()
. Странно, что вы их не пробовали .... - person Glavić   schedule 12.11.2013