【问题标题】:Comparing two Dates using strtotime() in PHP在 PHP 中使用 strtotime() 比较两个日期
【发布时间】:2013-07-09 23:17:56
【问题描述】:

我有两个包含日期字符串的变量,格式为

$four_days_have_passed = "07-14-2013";
$now = "07-10-2013";

我已经检查了 FirePHP 中的输出并且日期是正确的。

然后我尝试像这样比较它们,

if (strtotime($now) < strtotime($four_days_have_passed))
{
  Do Stuff
}

为什么 IF 语句中的代码从不执行?

【问题讨论】:

    标签: php date strtotime


    【解决方案1】:

    如果你想使用 MM/DD/YYYY 格式,你需要/ 分隔符。

    $four_days_have_passed = "07/14/2013";
    $now = "07/10/2013";
    

    From the manual:-

    m/d/y 或 d-m-y 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜线 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 d-m-y 格式。

    【讨论】:

    • 他不需要/ 他需要正确的格式。他也可以使用14-07-2013 :)
    【解决方案2】:

    格式(当这样使用时)是 DD-MM-YYYY。没有第 14 个月。

    【讨论】:

    • 我已强制格式为$now = date('m-d-Y', strtotime($getCurrentDate . "+0 day")); $four_days_have_passed = date('m-d-Y', strtotime($getRepDate . "+4 days"));
    • @David Folksman:不,你没有。 strtotime 不希望它是美国格式。
    • 为什么我使用 m-d-y 格式,我不明白你的答案?
    • @David Folksman:strtotime 接受日期为YYYY-MM-DD(首选)或DD-MM-YYYY 格式。而已。更多接受的格式在这里:php.net/manual/en/datetime.formats.date.php
    • 在这里工作? writecodeonline.com/phpdate_default_timezone_set('Europe/London'); $getCurrentDate = str_replace('/', '-',$_REQUEST['date']); $four_days_have_passed = date('m-d-Y', strtotime($getCurrentDate . "+4 days")); $now = date('m-d-Y', strtotime($rep1 . "+0 day")); echo $four_days_have_passed; echo "&lt;br&gt;".$now; if ($now &lt; $four_days_have_passed) { echo "&lt;br&gt; booya"; }
    【解决方案3】:

    我看到你接受了答案,但只是为了确保你理解。解析日期有两种情况。

    1. 美国 - 月/日/年
    2. 欧洲 - day.month.year 或 day-month-year

    您有错误,因为您提供了欧洲格式 "07-14-2013" 并且一年中没有 14 个月。

    适合您的格式是以下之一:

    • 14-07-2013 - 欧洲
    • 14.07.2013 - 欧洲
    • 07/14/2013 - 美国

    此外,为了比较数据时间,最好使用面向对象的解决方案和数据时间对象。你可以阅读更多here.

    【讨论】:

      【解决方案4】:

      strtotime() 函数的情况是使用yyyy-mm-dd 格式最容易处理的方法。这是 db 日期中的正常格式。如果您使用这种格式,可以轻松比较两个日期。

      【讨论】:

      • 欢迎来到 SO。为了使您的回答真正有用,您应该添加一个小示例。
      【解决方案5】:

      在欧洲,尤其是在法国, 我们还将这种格式与斜线分隔符一起使用:

      day/month/year
      

      法国日期示例:26/08/2019

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-29
        • 2011-04-20
        • 2014-07-16
        • 2011-09-28
        • 1970-01-01
        相关资源
        最近更新 更多