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

Форум PHP

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

 

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

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

тема: mktime неверное отнимание
 
 автор: TetRiska   (19.10.2011 в 12:40)   письмо автору
 
 

Привет всем. Должно вывести 00:00:05

мой код:
$bdate = $res2['result']['date'][0]; //допустим 19.10.2011 11:17:16
        
list($bdat,$btim) = explode(' ',$bdate);
list($byear,$bmonth,$cbday) = explode('-',$bdat);
list($bhour,$bmin,$bsec) = explode(':',$btim);
        
$ccook = time(); // допустим 19.10.2011 11:17:21
$bcook = mktime($bhour, $bmin, $bsec, $bmonth, $bday, $byear);
        
echo date('H:i:s',$ccook - $bcook);

на выводе 02:00:05, почему?

  Ответить  
 
 автор: Yuriev   (19.10.2011 в 13:21)   письмо автору
 
   для: TetRiska   (19.10.2011 в 12:40)
 

Может потому, что тут 19.10.2011 разделитель точки,
а тут explode('-',$bdat); тире?

  Ответить  
 
 автор: TetRiska   (19.10.2011 в 13:23)   письмо автору
 
   для: Yuriev   (19.10.2011 в 13:21)
 

не досмотрел, вот так:
$bdate = $res2['result']['date'][0]; //допустим 2011-10-19 11:17:16
        
list($bdat,$btim) = explode(' ',$bdate);
list($byear,$bmonth,$bday) = explode('-',$bdat);
list($bhour,$bmin,$bsec) = explode(':',$btim);
        
$ccook = time(); // допустим 2011-10-19 11:17:21
$bcook = mktime($bhour, $bmin, $bsec, $bmonth, $bday, $byear);
        
echo date('H:i:s',$ccook - $bcook);

временная зона GMT+02, может это повлияло?

  Ответить  
 
 автор: Drago   (19.10.2011 в 13:37)   письмо автору
 
   для: TetRiska   (19.10.2011 в 13:23)
 

> временная зона GMT+02, может это повлияло?
Ну конечно. Функция date работает только с абсолютными значениями кол-ва секунд, прошедших с 1970-01-01 00:00:00 GMT. Вот и считайте, какую дату вы получите с вашим вычитанием.

  Ответить  
 
 автор: TetRiska   (19.10.2011 в 13:39)   письмо автору
 
   для: Drago   (19.10.2011 в 13:37)
 

и как быть?
$ccook = time()-(2*60*60);

?

  Ответить  
 
 автор: Drago   (19.10.2011 в 14:12)   письмо автору
 
   для: TetRiska   (19.10.2011 в 13:39)
 

Считать вручную. Сколько секунд в минуте, и минут в часе, я вижу вы знаете.

  Ответить  
 
 автор: cheops   (19.10.2011 в 14:25)   письмо автору
 
   для: TetRiska   (19.10.2011 в 13:39)
 

Возможно вас заинтересует тема по ссылке http://softtime.ru/forum/read.php?id_forum=1&id_theme=81766.

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

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