2013-07-02 19 views
0

我已經爲出租車公司建立了一個預訂表單,但工作正常,但我遇到了問題,因爲用戶提出的預訂過期在將來。驗證時間和日期至少在未來的某個時間段

由於整個表格很長,所以我首先要確保用戶不會在不到一個小時的時間內進行預留,而無需填寫整個表格。

這就是我來了這麼遠,但它只是不工作:

<?php 
//Set local time zone. 
date_default_timezone_set('America/New_York'); 
//Get current date and time. 
$current_time = date('Y-m-d H:i:s'); 
//Set reservation time variable 
$res_datetime = $_POST['res_datetime']; 
//Set event time. 
$event_time = strtotime($res_datetime); 
?> 
<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Check Date and Time</title> 
</head> 
<?php 
//Check to be sure reservation time is at least one hour in the future. 
if (($current_time - $event_time) <= (3600)) 
{ 
    echo "You must make a reservation at least one hour ahead of time."; 
} 
?> 
<form name="datetime" action="" method="post"> 
<input name="res_datetime" type="datetime-local" id="res_datetime"> 
<input type="submit"> 
</form> 
<body> 
</body> 
</html> 

如何創建一個驗證檢查,以確保預約的日期和時間是至少一小時提前時間?

+0

事件時間 - 當前時間> 3600. –

+0

這裏有很多錯誤。我建議你在開始驗證之前先看看一個好的Forms教程,例如[W3Schools](http://www.w3schools.com/php/php_forms.asp)來整理表單處理。當你到達這一點時,使用Unix時間戳記你的日期,然後檢查差異是否大於3600將做你所需要的。 – 2013-07-02 23:03:55

+0

不,對於DST's_上帝之神,不要加上_think_會_always_意思是「一個小時」 - 使用strtotime('+ 1小時')'(並將其與'time()'比較) 。 – CBroe

回答

1

如果你這樣做(添加回聲線),你會看到一個大問題,你正在混合2種不同的日期類型!
echo "current: $current_time Event: $event_time";
if (($current_time - $event_time) <= (3600))

+0

啊,我明白了。謝謝。 – AnarchyOutlaw

0

好吧,我想通了。這是我想出的:

<?php 
//Set time zone: 
     date_default_timezone_set('America/New_York'); 
//Set current time: 
     $current_time = date("Y-m-d H:i:s"); 
//Convert current time to timestamp: 
     $current_timestamp = strtotime($current_time); 
//Set the minimum amount of time in advance a reservation can be made: 
     $min_time = strtotime("+1 hour", strtotime($current_time)); 
//Set event date: 
     $event_date = $_POST['event_date']; 
//Set event time: 
     $event_time = $_POST['event_time']; 
//Convert event time to timestamp: 
     $event_timestamp = strtotime("$event_date . $event_time"); 
//Set availability: 
    //If required fields are set and validated: 
    if (isset($event_date, $event_time)) { 
     //If reservation time is made in the past: 
     if ($event_timestamp < $min_time && $event_timestamp < $current_timestamp) { 
     $availability = "in_the_past"; 
     //If reservation time is less than the required amount of time in advance: 
     } elseif ($event_timestamp > $current_time && $event_timestamp < $min_time) { 
     $availability = "too_soon"; 
     //If a reservation is made for when no one may be checking email in time: 
     } elseif ($event_timestamp > strtotime('today 8:00pm') && $event_timestamp < strtotime('tomorrow 6:00am')) { 
     $availability = "unavailable"; 
     } else { 
     $availability = "available"; 
     } 

再次感謝大家的幫助。