2011-08-18 156 views
5
//expiration 
$datetoday = date("F j, Y, G:i"); 

$expquery = mysql_query("SELECT a_expire FROM regform_admin WHERE status = 'Pending for payment'"); 
$row = mysql_fetch_array($expquery); 
$expirydate = $row['a_expire']; 
echo "$datetoday"; 
echo "$expirydate"; 
if ($datetoday == $expirydate) { 
    $expirequery = mysql_query("UPDATE regform_admin SET status = 'Expired' WHERE status = 'Pending'"); 
    $expirequery2 = mysql_query("UPDATE regform SET status = 'Expired' WHERE status = 'Pending'"); 
} 
//end expiration 

嗨,我在此預訂代碼已到期。我的問題是,如果客戶提出保留在23:30和預訂將在00:30(1小時)到期,我做了這個代碼:將1小時到期時間添加到當前時間/日期

$currentdate = date("F j, Y, G:i"); 
$onehour = date("G") + 1; 
$expire = date("F j, Y, $onehour:i"); 

$onehour必須增加,但問題是, 23:30的預訂必須在24:30到期。但是在增加$ 1hour之後,23:30的結果變成24:40。自從上午12點的軍事時間是00:00而非24:00以來,我的程序無法讀取。任何人都可以在我的問題有建議嗎?謝謝。很抱歉的懶惰英語我累了想

+0

希望你能意識到這些更新查詢將改變每一行的表,只是你選擇了一個沒有。 –

+0

是的,非常感謝。我知道這一點。 :) – glove

回答

10
$expire = date("F j, Y, H:i", strtotime('+1 hour')); 
+0

嗨,你可以請我解釋一下strtotime()函數是什麼? $ onehour =(date(「G」)+ 1)%24; – glove

+0

@glove:要了解更多關於'strtotime'的信息,請查看文檔:http://php.net/manual/en/function.strtotime.php – Maher4Ever

+0

@glove如果您只是修改了'$ onehour'並且它調整了24:40要成爲00:40,你的新到期時間將是'今天上午12點40分',而不是'明天上午12點40分'...你需要將整個日期向前移動1小時,而不僅僅是小時分量。 'strtotime('+ 1小時')返回一個當前時間的UNIX時間戳加上一個小時,然後'日期'格式化該時間戳。 –

0
$one_hour_from_now = strtotime('+1 hour'); 

所以,你需要的是:

$expire = date('F j, Y, G:i', strtotime('+1 hour')); 
2
$expire = date("F j, Y, H:i", time()+3600); // 3600 sec in hour 
-1

爲什麼你不只是檢查,如果當前的小時23 ?喜歡的東西(我不知道三元運算符的PHP語法雖然):

$onehour = date("G) > 22 ? 0 : date("G) + 1; 

那麼你也想改變目前的一天,檢查是否改變的一年。

0

嘗試:

$t = strtotime('2015-10-27 11:19:04'); 
$d = date('Y-m-d H:i:s', $t); 
echo $d . "<br/>"; 
$t = $t + 3600; 
$d = date('Y-m-d H:i:s', $t); 
echo $d . "<br/>"; 
相關問題