2017-01-19 12 views
0

私の機能が動作するための条件を作りたいと思います。これが論理です。PHP条件付き日付処理 - 時間と日付を比較する

予約締切は12noonです。 現在の時刻が終了時刻(今日の午前11時)の場合は、関数xを実行します。予約が完了して現在の時刻と比較する時刻を設定する必要があります。

$tz_object = new DateTimeZone('Africa/Kampala'); 
$datetime = new DateTime(); 
$datetime->setTimezone($tz_object); 
$timeNow = $datetime->format('Y\-m\-d\ h:i:s'); 

$date = new DateTime(); 
$date->setTime(23,00); 
$timeAllowed = $datetime->format('Y\-m\-d\ h:i:s'); 

if ($timeNow < $timeAllowed) { 
    function woo_add_cart_fee() { 

     global $woocommerce; 

     $woocommerce->cart->add_fee(__('Custom', 'woocommerce'), number_format(5)); 

    } 
    add_action('woocommerce_cart_calculate_fees', 'woo_add_cart_fee'); 
} 

答えて

1

DateTimeオブジェクトの比較は簡単です。日付時刻を文字列に変換する必要はありません。

// time when booking closes 
$bookclose = new \DateTime(); 
$bookclose->setTimezone(new DateTimeZone('Africa/Kampala')); 
$bookclose->setTime(12,0,0); 

// fake a time that the booking is being made for testing 
$bookingtime = new \DateTime(); 
$bookingtime->setTimezone(new DateTimeZone('Africa/Kampala')); 

$bookingtime->setTime(11,59,59); 
echo 'Booking time is ' . $bookingtime->format('d/m/Y H:i:s'); 
if ($bookingtime < $bookclose) { 
    echo ' ALLOWED'.PHP_EOL; 
} else { 
    echo ' NOT ALLOWED'.PHP_EOL; 
} 

$bookingtime->setTime(12,0,0); 
echo 'Booking time is ' . $bookingtime->format('d/m/Y H:i:s'); 
if ($bookingtime < $bookclose) { 
    echo ' ALLOWED'.PHP_EOL; 
} else { 
    echo ' NOT ALLOWED'.PHP_EOL; 
} 

$bookingtime->setTime(12,0,1); 
echo 'Booking time is ' . $bookingtime->format('d/m/Y H:i:s'); 
if ($bookingtime < $bookclose) { 
    echo ' ALLOWED'.PHP_EOL; 
} else { 
    echo ' NOT ALLOWED'.PHP_EOL; 
} 

結果:

Booking time is 19/01/2017 11:59:59 ALLOWED 
Booking time is 19/01/2017 12:00:00 NOT ALLOWED 
Booking time is 19/01/2017 12:00:01 NOT ALLOWED