2015-11-23 2 views
0
<?php 

ini_set('date.timezone', 'America/New_York'); 

require_once '../init.php'; 

$dates = ['2015/11/29 21:28:00']; 

$tz = $_POST['tz']; 

$timestamp = strtotime("+1week"); 

$one_week = date("Y/m/d G:i:s", $timestamp); 

$key = array_search($one_week, $dates); 


if($tz == 'est'){ 

    if(false !== $key){ 

    echo html_escape($dates[$key]); 

    } 

}elseif($tz == 'pst'){ 

    if(false !== $key){ 

    $old_date = strtotime($dates[$key]); 

    $new_date = strtotime("-3 hour", $old_date); 

    $date = date("Y/m/d G:i", $new_date); 

    echo html_escape($date); 

} 

}elseif($tz == 'cst'){ 

if(false !== $key){ 

    $old_date = strtotime($dates[$key]); 

    $new_date = strtotime("-1 hour", $old_date); 

    $date = date("Y/m/d G:i:s", $new_date); 

    echo html_escape($date); 

} 

}elseif($tz = 'mst'){ 

    if(false !== $key){ 

    $old_date = strtotime($dates[$key]); 

    $new_date = strtotime("-2 hour", $old_date); 

    $date = date("Y/m/d G:i:s", $new_date); 

    echo html_escape($date); 

    } 

} 

?> 

Что делает вышеуказанный код, в конечном итоге подает дату, в соответствии с которой была нажата ссылка, будь то est, pst, cst или mst, в javascript через запрос ajax для таймера, если есть совпадение. Единственный способ совпадения - если текущая дата и время +7 дней соответствует значению в массиве, но я кое-что понял ... Я сделал это строго. Позвольте мне объяснить, что я имею в виду под «слишком строгим». Допустим, что в массиве дат и времени есть значение 2015/11/21 20:30:00, а текущая дата и время - 2015/11/21 20:30:01, код выше не будет соответствовать. Мне нужно знать, как разрешить вышеуказанный код делать совпадения до тех пор, пока он не будет после 20:30:00, а не раньше. Надеюсь, что я объяснил достаточно хорошо.Как отображать переменную только через определенное время

+0

можно сопоставить только дату ... –

+0

штопка, ТНХ любом случае :( –

+0

Я не совсем ясно, что делает этот код, но это звучит, как вы должны иметь возможность просто конвертировать обе даты в временные метки UNIX и делать для них простое целочисленное сравнение. Это также упростит все странное изменение часового пояса, которое вы делаете – maxton

ответ

0

Благодаря Maxton за подсказку. Я наконец получил то, что искал !!!! Я превратил текущую дату и время в метку времени, используя strtotime, текущую дату и определенное время в метку времени и выполнил целочисленное сравнение. Все еще принимая во внимание разницу в часовом поясе.

Код для будущих читателей:

ini_set('date.timezone', 'America/Los_Angeles'); 

$cur_time = strtotime(date("Y/m/d G:i:s")); 

$time = strtotime(date("Y/m/d 13:55:00")); 

if($cur_time > $time){ 

    echo 'Yeah!!'; 

}else{ 

    echo "Boo!!"; 

}