2013-07-01 142 views
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>'; 
    } 
} 



} 

Thankyou提前!

回答

0

您以不同的格式混合日期。 strtotime返回一個整數(Unix時間戳),而date返回文本表示(字符串)。將date("d/m/y")替換爲time(),它將起作用。

+0

這工作,排序的,但只有基於一年,所以如果我輸入02/07/14它承認它是在未來,但如果我輸入明天日期02/07/13它不?有什麼我需要做的嗎? –

+0

也隨機04/06/13說這是未來.... –

+0

你必須*一致*!可以使用mm/dd/yy或dd/mm/yy,但不要混合使用。 – str

0

()實際發生順序的參數了checkdate:

checkdate($month, $day, $year) 

所以切換的地方用$月份和$一天在你的代碼。

第二個錯誤是你與if(strtotime($dt)>$today)一致,你應該在那裏把$ today轉換成unix-time; if(strtotime($dt) > strtotime($today))

0

您可以用該日期的UNIX時間戳表示比較time()

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

文檔:strtotime

相關問題