【问题标题】:Comparing dates in PHP. Why this code returns true?比较 PHP 中的日期。为什么这段代码返回 true?
【发布时间】:2014-02-27 08:52:30
【问题描述】:

我正在尝试将未来日期与今天的日期进行比较。此代码应该返回 false,但它返回 true。

return (date('d-m-y') > date('15-03-14')) ? true : false;

【问题讨论】:

    标签: php date datetime compare


    【解决方案1】:

    首先,你不需要短路 if-else 语句,只需使用

    return date('d-m-y') > date('15-03-14');
    

    其次,您要比较两个字符串而不是两个日期,因此字符串比较与日期比较不同。

    你应该使用strtotime()函数或者使用DateTime对象

    return (strtotime(date('d-m-y')) > strtotime(date('15-03-14'))
    

    return new DateTime() > new DateTime('2014-03-15');
    

    【讨论】:

      【解决方案2】:

      因为它们被比较为字符串而不是日期。

      如果要比较日期,请使用以下内容:

      return new DateTime() > new DateTime('2014-03-15');
      

      【讨论】:

      • 谢谢.. 它应该可以使用 d-m-y 格式,没有问题吧?
      【解决方案3】:

      日期函数返回字符串,所以你比较两个字符串:

      '27-02-14' > '15-03-14'
      

      字符串逐个字符比较,在位置 0 我们有:

      '2' > '1' - and this is true
      

      【讨论】:

        【解决方案4】:

        您可以使用strtotime()将日期转换为整数

        return (strtotime(date('d-m-y')) > strtotime(date('15-03-14'))) ? true : false;
        

        或者使用DateTime::diff()

        【讨论】:

          猜你喜欢
          • 2020-07-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-04
          • 1970-01-01
          • 1970-01-01
          • 2023-03-27
          • 1970-01-01
          相关资源
          最近更新 更多