Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: конвертирование даты
 
 автор: vakhtang   (08.09.2013 в 01:29)   письмо автору
 
 

Всем привет

У меня вот такая проблема,

$d=86400;
echo $left_time = date("H:i:s",$d);

вот такой код мне выдает
04:00:00 (на локальном компе)
19:00:00 (на первом сервере)
18:00:00 (на втором сервере)

Я вобще то ждал 24:00:00 но никак не получается, в чем ошибка?

а если доюавить секунды вот так

$d=864000000;
echo $left_time = date("H:i:s",$d);
то результат на 1 час больше покажет
05
20
19

  Ответить  
 
 автор: confirm   (08.09.2013 в 03:47)   письмо автору
 
   для: vakhtang   (08.09.2013 в 01:29)
 

Ошибка в том, что вы невнимательно читаете о функциях, если только читаете.
Функция date() принимает два аргумента, второй из которых является временной меткой. Если этот аргумент опущен, то принимается равным текущей меткой возвращенной функцией time().
Функция time() возвращает количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT) до текущего времени. Значение этой точки отсчета будет равно:
<?
echo strtotime('1970-01-01 00:00:00'); //зависит от часового пояса


Если ваша метка некорректна, РНР дополнит ее незначащими нулями слева (а никак не справа, как вы пытаетесь далее), и если вывести полную дату, то вы сможете наблюдать следующее:
<?
echo date('Y-m-d H:i:s'86400); //результатом будет значение полученное из суммы/разности 86400 и метки Unix


Разница показаний локального и серверных значений объясняется разницей часовых поясов - локальное время берется из системного времени вашего компьютера, а на сервере соответственно их системного времени, и с учетом установленной временной зоны в РНР.

Ваши 24 часа проще получить обычным делением с последующим анализом, но если так хочется, то можете напрячь и интерпретатор функцией date(). Но только учтите, что времени 24:00:00 вы не получите, так как это будет 00:00:00 и следующий день:
<?
//получаем метку времени текущего дня описанного строковой английской нотацией 
echo date('Y-m-d H:i:s'strtotime('this day')).'<br>';
//то же самое, но со сбросом времени в начало
echo date('Y-m-d H:i:s'strtotime('today')).'<br>';
//текущая дата со сбросом времени в начало и добавлением 86400 секунд
echo date('Y-m-d H:i:s'strtotime('today +86400 second'));


Разница между двумя последними запросами времени составляет 1 день.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования