2017-02-14 106 views
0

IM有關於檢查當前時間提交時間有點問題PHP檢查當前時間

date_default_timezone_set('Asia/Hong_Kong'); 
$date = date('Y-m-d H:i:s'); 

我想給它這樣

if(isset($_POST['submit']) { 


if (date (H)< 1pm) { 
/* get the time difference or */ echo " you're late $late "; 
// do something } 
else if (date (H) < 4pm) { 
/get the time difference or */ echo " you're late $late "; 
// do something } 
else if (date (H) < 7pm { 
/* get the time difference or */echo " you're late $late "; 
// do something } 
} 

但我不知道如何計算$late$late是要知道提交時間有多少小時/分鐘

+0

我應該'$ late'是什麼?他們遲到多少小時/分鐘? – Qirel

+0

是的,先生,虐待現在編輯 – JustAngelo

+0

我想這些是間隔(下午1點,下午4點,晚上7點),但是當用戶不遲到? – Qirel

回答

0

您可以使用DateTime::createFromFormat()從給定時間創建一個dateobject,並使用new DateTime()進行比較。

$now = new DateTime(); 
if ($now->format("H:i") > "13:00") { 
    $deadline = DateTime::createFromFormat("H:i", "13:00"); 
    $diff = $now->diff($deadline); 
    echo "You are ".$diff->h." hours and ".$diff->i." minutes late"; 
} 

如果您在14:04提交表單,上面的代碼將輸出

You are 1 hours and 4 minutes late

+0

所以這樣? https://jsfiddle.net/tch4q2qy/ – JustAngelo

+0

你爲什麼不嘗試呢? ;-)雖然jsfiddle不起作用,但PHP!= JS – Qirel

+0

當我點擊按鈕時,沒有任何反應,idk爲什麼 – JustAngelo

0

依賴於您試圖展示的內容...我假設您在這裏w螞蟻顯示兩次(日期時間)之間的差異。你可以這樣做:

$datetime1 = new DateTime('2071-02-14 02:28:30'); 
$datetime2 = new DateTime(); 
$interval = $datetime1->diff($datetime2); 

echo "\ndate1: " . $datetime1->format('Y-m-d H:i:s'); 
echo "\ndate2: " . $datetime2->format('Y-m-d H:i:s'); 
echo "\ndiff: " . $interval->format('%R%H hours'); 

檢查出documentation爲格式化區間輸出。

如果你想

只顯示了基於當請求提交,你可以簡單地使用

$datetime = new DateTime(); 
$hours = $datetime->format('H'); 

,然後使用$小時變量來決定做什麼的時候。希望有所幫助。 關於DateTime類的更多文檔。

+0

我想用我的時區顯示當前時間的時間,但是當我點擊提交按鈕時,它會顯示遲到的例子我在1:05點擊它,然後顯示你晚了00:05:00類似 – JustAngelo

+0

,我也需要顯示你的代碼只顯示時間 – JustAngelo

+0

@JustAngelo你知道我給你一個鏈接的所有參數格式間隔... $ interval-> format('%H:%I:%S');爲你的情況,你在評論中描述,但在你原來的問題中沒有提到 – flynorc

相關問題