2016-10-10 24 views
1

現在の日付/時刻を特定のタイムゾーン/開始時刻/終了時刻で検証するにはどうすればよいですか?PHP - 現在の時刻と指定されたタイムゾーンの開始時刻と終了時刻が一致するかどうかを確認する方法

outside $meeting_for, $meeting_starts till $meeting_ends rangeはすべてfalseを返す必要があります。

$meeting_for = 'America/Los_Angeles'; 
$meeting_starts ='2016-10-11 00:00:00'; 
$meeting_ends = '2016-10-11 06:00:00'; 

function give_meeting_result_based_on_rightnow() { 
    // PHP server time 
    date_default_timezone_set('Europe/Brussels'); 
    $etime1 = date('Y-m-d H:i:s'); 
    $date = new DateTime($etime1, new DateTimeZone('Europe/Brussels')); 

    // PHP server time converted to meeting time 
    $date->setTimezone(new DateTimeZone($meeting_for)); 
    $logic_check= $date->format('Y-m-d H:i:s') . "\n"; 

    if($logic_check is between ($meeting_starts till $meeting_ends)) { 
    return true; 
    } 
    else { 
    return false; 
    } 

} 

echo give_meeting_result_based_on_rightnow(); 
+1

は、[カーボン](http://carbon.nesbot.com/docs/)にも、あなたのシステムのタイムゾーンを維持します各タイムゾーンの会議のタイミングを簡単に計算できるように、UTCに設定します。 – imrealashu

答えて

2

解決策は非常に簡単ですが、あなたはいくつかの間違いを犯しました。先頭の変数はグローバルスコープにはありません。関数内では使用できません。そのため、あなたはそれらを関数の中に入れたり、パラメータとして渡したりする必要があります(私が以下のコードで行ったように)。それはif文と非常に簡単なチェックだと後:

<?php 

// These are NOT global. They're not available within the scope of the function 
$meeting_for = 'America/Los_Angeles'; 
$meeting_starts ='2016-10-11 00:00:00'; 
$meeting_ends = '2016-10-11 06:00:00'; 

function give_meeting_result_based_on_rightnow($timeZone, $startTime, $endTime) { 

    // PHP server time 
    date_default_timezone_set('Europe/Brussels'); 
    $etime1 = date('Y-m-d H:i:s'); 
    $date = new DateTime($etime1, new DateTimeZone('Europe/Brussels')); 

    // PHP server time converted to meeting time 
    $date->setTimezone(new DateTimeZone($timeZone)); 
    $logic_check= $date->format('Y-m-d H:i:s') . "\n"; 

    if ($logic_check >= $startTime && $logic_check <= $endTime) 
    { 
     return true; 
    } else { 
     return false; 
    } 

} 

// Passing along the variables as parameters to the function 
echo give_meeting_result_based_on_rightnow($meeting_for, $meeting_starts, $meeting_ends); 

?> 

echo()が実際に任意の出力が得られないであろうことを覚えておいてください。ブール値ではなく、そのための文字列を返す必要があります。

編集:私は、任意の日付/時間関連のもののためにお勧めしたい

$ var_dump_this_code_with_curdate('2016-10-10 07:54:32') 
bool(false) 
+1

@YumYumYum真、 'var_dump()'と出力すると、haha。とにかく、私はあなたを助けてくれてうれしいです。 – icecub

関連する問題