За последние 24 часа нас посетили 7646 программистов и 445 роботов. Сейчас ищут 102 программиста ...

не выводится время

Тема в разделе "PHP для новичков", создана пользователем Пэлт, 3 фев 2021.

  1. Пэлт

    Пэлт Новичок

    С нами с:
    1 апр 2020
    Сообщения:
    96
    Симпатии:
    0
    PHP:
    1. function tl($tl){
    2.     $d=3600*24;
    3.     $day=floor($tl/$d);
    4.     $tl=$tl-($d*$day);
    5.  
    6.     $hour=floor($tl/3600);
    7.     $tl=$tl-(3600*$hour);
    8.  
    9.     $minute=floor($tl/60);
    10.     $tl=$tl-(60*$minute);
    11.  
    12.     $second=floor($tl);
    13.  
    14.     $dayt="".($day>0?"$day д. ":null)."";
    15.     $hourt="".($hour>0?"$hour ч. ":null)."";
    16.     $minutet="".($minute>0?"$minute м. ":null)."";
    17.     $secondt="".($second>0?"$second с. ":null)."";
    18.    
    19.     if($day>0){
    20.         $minutet=NULL;
    21.         $secondt=NULL;
    22.     }
    23.     if($hour>0 && $day==0){
    24.         $secondt=NULL;
    25.         $dayt=NULL;
    26.     }
    27.    
    28.     return "Осталось $dayt$hourt$minutet$secondt";
    29. } /* Вывод оставшегося времени */
    30.  
    31. $x = time()+60*60; // 1 hour
    32. echo tl($x);
    должно выводиться 1 час, но там показывает 18661 дней 13 часов
     
  2. Drunkenmunky

    Drunkenmunky Новичок

    С нами с:
    12 авг 2020
    Сообщения:
    664
    Симпатии:
    129
    Вычисляем прошедшее\оставшееся время от даты.
    PHP:
    1. <?php
    2. $date = '2020-02-14 12:10:22'; // '2021-02-04', '12:10:22'...
    3.  
    4. $now = time();
    5.  
    6. $diff = $now - date_format(date_create($date), 'U');
    7.  
    8. $str = ($diff > 0) ? 'Прошло ' : 'Осталось ';
    9.  
    10. $abs = abs($diff);
    11.  
    12. $str_append = (floor($abs/86400) > 0) ?
    13.             floor($abs/86400).' дней' : '';
    14.  
    15. $mod = bcmod( $abs,  86400);
    16. $str_append .= ($mod > 3600) ?
    17.             ' '.floor($mod / 3600) .' часов' : '';
    18.  
    19. $mod2 = bcmod( $mod, 3600);
    20. $str_append .= ($mod2 > 60) ?
    21.             ' '.floor($mod2 / 60).' минут' :'';
    22.  
    23. $mod3 = bcmod( $mod2, 60);
    24. $str_append .= ($mod3 != 0) ?
    25.             ' '.$mod3.' секунд' :'';
    26.  
    27. echo $str.$str_append;
    28. ?>
     
    #2 Drunkenmunky, 3 фев 2021
    Последнее редактирование: 3 фев 2021
  3. Пэлт

    Пэлт Новичок

    С нами с:
    1 апр 2020
    Сообщения:
    96
    Симпатии:
    0
     
  4. Drunkenmunky

    Drunkenmunky Новичок

    С нами с:
    12 авг 2020
    Сообщения:
    664
    Симпатии:
    129
    >Беру значение из бд а там время в таком формате 1612375751
    И как мне через твою функцию вычислить оставшееся время?

    Строки
    $date = '2020-02-14 12:10:22'; // '2021-02-04', '12:10:22'...
    и
    $diff = $now - date_format(date_create($date), 'U');
    замените
    на
    $var = 1612375751;
    $diff = $now - $var;