【问题标题】:comparing date text field to todays date将日期文本字段与今天的日期进行比较
【发布时间】:2013-07-01 11:34:43
【问题描述】:

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

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



}

提前谢谢你!

【问题讨论】:

    标签: php date time


    【解决方案1】:

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

    【讨论】:

    • 这有点用,但仅基于年份,所以如果我输入 02/07/14 它会识别它是在未来,但如果我输入明天的日期 02/07/13 它不会不是吗?还有什么我需要做的吗?
    • 你必须一致!使用 mm/dd/yy 或 dd/mm/yy 但不要混合使用。
    • 是的,我知道,用 time() 替换 date ("D>M>Y') 后,我看不出哪里不一致。-我需要一切都在 dd/ mm/yy 格式,因为我在英国。我是一个完全的菜鸟,并且很难看到我错过了什么。
    • 破解它我想。感谢您的帮助,
    【解决方案2】:

    checkdate() 实际上是按这个顺序取参数的:

    checkdate($month, $day, $year)
    

    所以在你的代码中用 $month 和 $day 交换位置。

    第二个错误是你与if(strtotime($dt)&gt;$today) 一致,你也应该将$today 转换为unix-time; if(strtotime($dt) &gt; strtotime($today))

    【讨论】:

      【解决方案3】:

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

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

      文档:strtotime

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-03
        • 2015-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多