希望你能提供帮助,我有以下代码来检查两者,日期字段是否有效,以及它是否曾经发生过。有效的格式部分有效,但它一直说日期是未来的(因此是不可接受的),无论它是否存在。我在这里缺少什么?
if($_POST['DateOfCall']!=NULL)
{
$dt = $_POST['DateOfCall'];
$array = explode("/",$dt);
$day = $array[1];
$month = $array[0];
$year = $array[2];
if(!checkdate( $day,$month, $year))
{
echo '<script type="text/javascript">'
, 'alert ( "Not a Valid Date of Call" );'
, '</script>';
}
else
{
$today = date("d/m/y");
if(strtotime($dt)>$today)
echo '<script type="text/javascript">'
, 'alert ( "Date of Call is in the future..." );'
, '</script>';
}
}
}
提前谢谢!
答案 0 :(得分:0)
您可以使用不同的格式混合日期。 strtotime
返回一个整数(Unix时间戳),而date
返回文本表示(字符串)。将date("d/m/y")
替换为time()
即可。
答案 1 :(得分:0)
checkdate()实际上按以下顺序获取参数:
checkdate($month, $day, $year)
因此,在代码中切换$ month和$ day。
另外第二个错误是您与if(strtotime($dt)>$today)
对齐,您应该将今天的$转换为unix-time; if(strtotime($dt) > strtotime($today))
答案 2 :(得分:0)
您可以将time()
与该日期的UNIX时间戳表示进行比较:
if (strtotime("MM/DD/YYYY 4:00PM") > time())
{
// given date is in future. Proceed.
}
文档:strtotime