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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: конвертирование даты

Сообщения:  [1-2] 

 
 автор: 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 день.

  Ответить  
 
 автор: 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

  Ответить  

Сообщения:  [1-2] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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