12 часовой формат времени в php для сравнения

Тема в разделе "Как сделать...", создана пользователем ВадимПолоусоВорон, 4 июн 2013.

  1. ВадимПолоусоВорон

    ВадимПолоусоВорон Создатель

    Регистр.:
    14 апр 2013
    Сообщения:
    29
    Симпатии:
    9
    Помогите разобраться с проблемой. Есть скрипт, который на основе того сколько сейчас времени должен выводить тот или иной контент. Суть в том что сейчас скрипт считывает время в 24 формате и если поставить интервал с 22 00 до 2 00 то скрипт не будет выводить нужную инфу. Подскажите как научить скрипт распознавать 12 часовой формат?

    Я слаб в php так что не судите строго .
    Вот пример работы скрипта http://7daymoney.ru/1/test.php
    и его кусок с которым мне нужна помощь
    PHP:
    $s $row['stime']; // берется из бд
    $do $row['etime']; //берется из бд
    // выводим инфу в зависимости от времени работы филиала
        
    if(date("G") >= $s and date("G") <= $do){
            echo 
    "Прямая трансляция с клуба ";
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.034
    Симпатии:
    2.035
    1) Преобразовать 12-часовой формат в 24-часовой
    2) Использовать функцию date для вывода pm/am и сравнивать с их учётом
    3) Используйте unixtime и не будет проблем.
     
  3. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.185
    Проблему с интервалом от 22 00 до 2 00 можно решить добавлением маленькой проверки:

    PHP:
    $s $row['stime']; // берется из бд
    $do $row['etime']; //берется из бд
    if ($do $s$do += 24;
    // выводим инфу в зависимости от времени работы филиала
        
    if(date("G") >= $s and date("G") <= $do){
            echo 
    "Прямая трансляция с клуба ";
     
  4. ВадимПолоусоВорон

    ВадимПолоусоВорон Создатель

    Регистр.:
    14 апр 2013
    Сообщения:
    29
    Симпатии:
    9
    а не подскажите как сделать?

    не вариант - в скрпте так же есть вывод времени работы. если время не совпадает - выводится сообщение - простите мы закрыты, мы работаем с 22 00 до 2 00 - дико извиняюсь что не уточнил такой ньюанс :ah:

    Добавлено latteo: используй, кнопку редактировать сообщение, если надо что-то добавить к своему посту и тебе еще никто не ответил
     
  5. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.185
    Не обязательно использовать одну и туже переменную для вывода и сравнения...
    PHP:
    $s $row['stime']; // берется из бд
    $do $row['etime']; //берется из бд
    if ($do $s$do2 $do 24;
    else 
    $do2 $do;
    // выводим инфу в зависимости от времени работы филиала
        
    if(date("G") >= $s and date("G") <= $do2){
            echo 
    "Прямая трансляция с клуба ";
    А с 12 часовым форматом всё равно дополнительную проверку придётся использовать, да и непривычен этот формат нашему человеку... В помошь тебе будут date('h') , date('a'). И вообще почитай, что делает date(); http://ua2.php.net/manual/ru/function.date.php

    Исходя из задачи задать время работы заведения, такой вариант выглядит более чем странно...
     
  6. ВадимПолоусоВорон

    ВадимПолоусоВорон Создатель

    Регистр.:
    14 апр 2013
    Сообщения:
    29
    Симпатии:
    9
    спасибо всем за ответы решил задачу. решил не заморачиваться и приьег к совету latteo сделал переменную $do с + 24 - тогда все работает и условие верное, а для вывода правильно времени работы сделал просто вторую переменную с -24 - костыль и кривокодость но работает и это главное))
    вот пример - вдруг кому то еще пригодится )

    PHP:
    $do $row['etime'] + 24;
        
    $do2 $do 24;
        
    $URL_POTOK $row['video'];
        
    // выводим инфу в зависимости от времени работы филиала
        
    if(date("G") >= $s and date("G") <= $do){
            echo 
    "Прямая трансляция с клуба ХмельноФФ в г.$name <br />";
            
    //echo $URL_POTOK. '<br>'; //проверям правильно ил скрипт у нас принял ссылку на видео
            
    echo '<hr>';
            echo 
    '<object data="/flowplayer-3.2.7.swf" height="330px" id="video-352_api" type="application/x-shockwave-flash" width="500px" height="50px">';
            echo 
    '<param name="allowfullscreen" value="true"><param name="allowscriptaccess" value="always">';
            echo 
    '<param name="quality" value="high"><param name="cachebusting" value="false">';
            echo 
    '<param name="bgcolor" value="#000000">';
            echo 
    '<param name="flashvars" value="config={&quot;clip&quot;:{&quot;autoPlay&quot;:true,&quot;autoBuffering&quot;:false,&quot;url&quot;:&quot;'.$row['video'].'
            &quot;},&quot;playerId&quot;:&quot;video-352&quot;,&quot;playlist&quot;:
            [{&quot;autoPlay&quot;:true,&quot;autoBuffering&quot;:false,&quot;url&quot;:&quot;
            '
    .$row['video'].'
            &quot;}]}">'
    ;
            echo 
    '</object>';
        
    //если не совпадает
        
    }else{
        echo 
    "Извините, в данный момент филиал не работает<br>";
        echo 
    "Филиал клуба г.$name работает с .$s : 00 до .$do2 : 00 ";
        echo 
    '<br>';
        echo 
    '<a href="#"><img src="http://fc05.deviantart.net/fs70/i/2012/130/2/3/livestream_offline_message_by_tastes_like_ciel-d4za5cu.png"
      width="400"  alt="lorem"></a>'
    ;
        }