2016-10-10 7 views
1

Wie kann ich das aktuelle Datum/die aktuelle Uhrzeit mit der angegebenen Zeitzone/Start/Ende validieren lassen?PHP - Wie kann ich validieren, wenn die aktuelle Uhrzeit mit dem Start und Ende einer bestimmten Zeitzone übereinstimmt?

außerhalb $meeting_for, $meeting_starts till $meeting_ends range, sollten alle falsch zurückgeben.

$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

ich für jedes Datum/Zeit bezogenes empfehlen würde Sie mit [Carbon-] (http://carbon.nesbot.com/docs/) auch, halten Sie Ihr System Zeitzone zu UTC, so dass Sie Ihre Besprechungszeitpunkte für jede Zeitzone einfach berechnen können. – imrealashu

Antwort

2

Die Lösung ist recht einfach, aber Sie haben ein paar Fehler gemacht. Die Variablen oben sind nicht im globalen Gültigkeitsbereich. Sie sind in der Funktion nicht verfügbar. Dazu müssen Sie sie entweder in die Funktion einfügen oder als Parameter übergeben (wie im Code unten). Danach ist es eine sehr einfache Prüfung mit einer if-Anweisung ist:

<?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); 

?> 

Beachten Sie, dass die echo() eigentlich keine Ausgabe geben wird. Sie müssen dafür einen String anstelle eines booleschen Wertes zurückgeben.

EDIT:

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

@YumYumYum True, mit 'var_dump()' gibt es Ausgabe, haha. Wie auch immer, froh, dass ich dir hätte helfen können. – icecub

Verwandte Themen