【问题标题】:php how to check if date string in between dates [duplicate]php如何检查日期之间的日期字符串[重复]
【发布时间】:2019-01-21 16:34:58
【问题描述】:

我在字符串中有日期。即:18/10/2018

还有对象中的日期: $pnrProduct['Date'] 。即 20/10/2018

我想检查第二个日期是否比第一个大(在这种情况下它更大)

我该怎么做?

【问题讨论】:

    标签: php


    【解决方案1】:

    函数strtotime() 就是你所需要的。它需要一个可日期的字符串并将其转换为从纪元开始经过的秒数。

    简单来说:

    if (strtotime(str_replace("/", "-", "18/10/2018")) > strtotime(str_replace("/", "-", "20/10/2018")))
      echo "Greater";
    else
      echo "Smaller";
    

    请注意:

    strtotime("18-10-2018")
    int(1539835200)
    
    strtotime("20-10-2018")
    int(1540008000)
    

    您可能需要将分隔符替换为:

    m/d/yd-m-y 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜线( /),则假定为美式m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 d-m-y 格式。但是,如果年份以两位数格式给出并且分隔符是破折号 (-),则日期字符串将被解析为 y-m-d

    为避免潜在的歧义,最好尽可能使用 ISO 8601 (YYYY-MM-DD) 日期或DateTime::createFromFormat()

    【讨论】:

    • @Roi 欢迎...
    【解决方案2】:

    你必须使用 strtotime 来解析一个字符串到日期

    $firstDate = strtotime(str_replace("/", "-", "20/10/2018"));
    $secondDate = strtotime(str_replace("/", "-", $pnrProduct['Date']));
    
    if ($firstDate < $secondDate ) { /* do Something */ }
    

    For more informations

    【讨论】:

    • 这行不通。检查我的答案为什么!
    • 啊,是的,谢谢!我正在编辑我的帖子
    【解决方案3】:

    使用 simpleDateTime 类怎么样?

    <?php
    $datetime1 = DateTime::createFromFormat('d/m/Y','18/10/2018');
    $datetime2 = DateTime::createFromFormat('d/m/Y','20/10/2018');
    
    if($datetime1 > $datetime2){
        echo 'datetime1 greater than datetime2';
    } else {
        echo 'datetime2 greater than datetime1';
    }
    ?>
    

    演示: https://3v4l.org/5hYBP

    【讨论】:

      猜你喜欢
      • 2012-09-15
      • 2013-10-04
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      相关资源
      最近更新 更多