За последние 24 часа нас посетили 31663 программиста и 1363 робота. Сейчас ищут 823 программиста ...

арифметика со временем

Тема в разделе "PHP для новичков", создана пользователем crautcher, 5 янв 2012.

  1. crautcher

    crautcher Активный пользователь

    С нами с:
    21 май 2011
    Сообщения:
    156
    Симпатии:
    0
    есть ли в пхп функции для аредметических дейтвий со временем ,
    например мне надо узнать разницу во времени между 2012-01-05 09:29:43 и 2012-01-05 11:04:14 .
    и также вопрос как можно узнать вчерашную дату , функция Date возвращает сегодняшнею?
     
  2. crautcher

    crautcher Активный пользователь

    С нами с:
    21 май 2011
    Сообщения:
    156
    Симпатии:
    0
    вчерашнюю дату нашел как сделать ,
    PHP:
    1.  
    2. <?php
    3. date('Y-m-d' , strtotime('-1 day'))
    а с вычитанием еще времени еще интерено [/php]
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    можно дату перевести в секунды и вычитать.
     
  4. crautcher

    crautcher Активный пользователь

    С нами с:
    21 май 2011
    Сообщения:
    156
    Симпатии:
    0
    в общем вышла у меня такая функция вычисления разницы
    PHP:
    1.  
    2. <?
    3. function time_difference($s1,$s2){
    4.  
    5. $s1 = strtotime($s1);
    6. $s2 = strtotime($s2);
    7.  
    8. if ($s1 > $s2)
    9.  $s = $s1 - $s2;
    10. else
    11.  $s = $s2 - $s1;
    12.  
    13. $m=0;$hr=0;$d=0;$td="now";
    14.     if($s>59) {
    15.         $m = (int)($s/60);
    16.         $s = $s-($m*60);
    17.         $td = "$m min";
    18.     }
    19.     if($m>59){
    20.         $hr = (int)($m/60);
    21.         $m = $m-($hr*60);
    22.         $td = "$hr hr";
    23.         if($hr>1) $td .= "s";
    24.         if($m>0) $td .= ", $m min";
    25.     }
    26.     if($hr>23){
    27.         $d = (int)($hr/24);
    28.         $hr = $hr-($d*24);
    29.         $td = "$d day";
    30.         if($d>1) $td .= "s";
    31.         if($d<3){
    32.             if($hr>0) $td .= ", $hr hr"; if($hr>1) $td .= "s";
    33.         }
    34.     }
    35.     return $td;
    36. }
    37. ?>