2014-12-04 138 views
1
$todaysDate = date("Y-m-d"); 
$maxBookingDate=strtotime('+2 weeks', $todaysDate); 
$dateEntered = DateTime::createFromFormat('d/m/Y', $_POST["Date"]); 
$tableDate =$dateEntered->format('Y-m-d'); 
if ($tableDate < $todaysDate){ 
    echo "Date must be in the future"; 
} 
if ($tabledate > $maxBookingDate){ 
    echo "Date must be no more than 2 weeks in advance"; 
} 

日期比较,以确保用户进入日期不超过两周提前没有工作,我做了什么错了?PHP日期比较(2周)

+2

strtotime需要一个int作为第二个参数,但$ todaysDate已经做了一个字符串。 – 2014-12-04 10:00:13

+0

我会正确使用微时间和转换我认为... – MadsBjaerge 2014-12-04 10:01:26

+0

date()返回字符串,strtotime()接受int作为第二个参数,这是一个时间戳。 比较日期时,可以使用时间戳,即int,但不会比较两个日期字符串。 – 2014-12-04 10:14:05

回答

0

你可以使用DateTime类都通过了,使得其更容易地比较:

$todaysDate = new DateTime(); 
$maxBookingDate = new DateTime('+2 weeks'); 
$dateEntered = DateTime::createFromFormat('d/m/Y', $_POST['Date']); 
if ($dateEntered < $todaysDate){ 
    echo "Date must be in the future"; 
} elseif ($dateEntered > $maxBookingDate){ 
    echo "Date must be no more than 2 weeks in advance"; 
} 

在您的代码:

$todaysDate是一个字符串,你喂它里面strtotime()作为你的第二个参数这是不正确的用法。第二个参数需要数值(时间戳)。

在你的if语句中,你正在比较字符串。您应该将它们作为时间戳或DateTime对象进行比较,如上面的答案。