1

私がやろうとしているのは、現在の時間がほとんどの曜日で異なる特定の時間ブロック内にあるかどうかを確認することです。私はこれを約6つの異なる方法で試みましたが、他の方法は一度だけで、二度と完全に困惑することはないので、ハイブの助けを求めたいと思いました。

これが私が現在持っているものです。

    /**
     * Simple Array Storing the times to block on each day
     */
    $nonNewDay = array(
        array(
            '2:00 am',
            '11:00 am'
        ),
        array(
            '2:00 am',
            '11:00 am'
        ),
        array(
            '2:00 am',
            '11:00 am'
        ),
        array(
            '2:00 am',
            '11:00 am'
        ),
        array(
            '2:00 am',
            '11:00 am'
        ),
        // Weekends
        array(
            '2:00 am',
            '1:00 pm'
        ),
        array(
            '2:00 am',
            '12:00 pm'
        ),
    );

    // Get Current weekday and time;
    $weekday = date('w');
    $date = date('m-d-Y');
    $time = date('g:00 a', strtotime('now'));

    echo $date;
    echo '<br />';
    echo $time;
    echo '<br />';

    /**
     * Were Attempting to block out all time blocks that are NOT "New Day Programming"
     * Which currently are:
     * Mon - Fri 11:00 am - 2:00 am
     * Sat, Sun 2:00 am - 1PM
     */

    if (strtotime($date . ' ' . $time) <= strtotime($date . ' ' . $nonNewDay[$weekday - 1][0]) && strtotime($date . ' ' . $time) >= strtotime($date . ' ' . $nonNewDay[$weekday - 1][1])) {
4

2 に答える 2

1

良いアプローチはここで見ることができます

$current_time = strtotime('now');
if ($current_time > strtotime('wednesday this week 8:00pm') && $current_time <    
    strtotime('thursday this week 2:00am')) {
// do stuff 
}
于 2013-02-08T14:26:47.403 に答える
1

これはおそらくあなたのために仕事をするはずです:

$current_date = strtotime(date("g:00 a"));
$value = $nonNewDay[date('N')-1];
// for php < 5.1, I think this one will do the work:
// $value = $nonNewDay[(date('w') == 0 ? 6 : date('N')-1)];
if ((strtotime($value[0]) <= $current_date) && ($current_date < strtotime($value[1]))) {
    die('Blocked');
}
于 2013-02-08T15:23:43.873 に答える