0

希望您能提供帮助,我有以下代码来检查日期字段是否有效以及过去是否发生过。有效格式部分有效,但它一直说日期在未来(因此不可接受),无论它是否存在。我在这里想念什么?

  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>';
    }  
}  



}

先感谢您!

4

3 回答 3

0

您混合使用不同格式的日期。strtotime返回一个整数(Unix 时间戳),同时date返回一个文本表示(字符串)。替换date("d/m/y")time(),它将起作用。

于 2013-07-01T11:38:48.463 回答
0

checkdate() 实际上按以下顺序获取参数:

checkdate($month, $day, $year)

因此,在您的代码中使用 $month 和 $day 切换位置。

第二个错误是您与if(strtotime($dt)>$today),您应该将 $today 也转换为 unix-time ;if(strtotime($dt) > strtotime($today))

于 2013-07-01T11:42:39.097 回答
0

您可以time()与该日期的 UNIX 时间戳表示进行比较:

if (strtotime("MM/DD/YYYY 4:00PM") > time())
{
    // given date is in future. Proceed.
}

文档:strtotime

于 2013-07-01T11:43:09.820 回答