以正确的格式比较日期

时间:2018-04-15 06:25:42

标签: php date datetime time strtotime

我有各种各样的问题试图找到匹配的匹配格式,我无法理解如何比较2 x日期这么难,我想它就在我的上方。< / p>

我在MySQL数据库中有一个约会:20/12/17

报告日期是:19/01/18(最终将是今天的日期,但我正在测试一个旧文件)

我只想在0-30天,31-60天,61-90天和91天以上找到日期

我将日期转换为时间戳,以便我可以进行比较&gt;或者&lt;但我在将日期移至30天时遇到了麻烦。

我尝试转换为DateTime并使用date_sub,但它似乎令人费解......

我想要做的就是检查数据库中的日期字符串是否在其中一个日期范围内,但我正在苦苦挣扎。

我尝试使用strtotime&#39; -30天&#39; 我用date_sub

尝试了DateTime

我想我现在真的很困惑,无法解决任何问题

这就是我所拥有的:

        $RO_Date = date_format( date_create_from_format( 'd/m/y',  $RO["RO Date"] ), 'Y-m-d' );
        $todaysDate = date_format(date_create_from_format('d/m/y', '19/01/18'), 'Y-m-d' );// Using date file was sent

        echo $RO_Date;
        echo ' ('.strtotime( $RO_Date).') ';
        echo ' <br> ';
        echo $todaysDate;
        echo ' (' . strtotime($todaysDate) . ') ';
        echo ' <br> ';
        echo ' -30 Days ';
        echo ' (' . date("Y-m-d", strtotime("-30 days", $todaysDate)) . ') ';

        if (strtotime($RO_Date) >= $todaysDate-30 ) :
            echo ':CURRENT<br>';
        elseif (strtotime($RO_Date) >= $todaysDate-60 ) :
            echo ':31-60<br>';
        elseif (strtotime($RO_Date) >= $todaysDate - 90 ) :
            echo ':61-90<br>';
        elseif (strtotime($RO_Date) >= $todaysDate - 120 ) : 
            echo ':90-120<br>';
        else :
            echo ':120+<br>';
        endif;

输出:

2017-12-20 (1513688400) 
2018-01-19 (1516280400) 
-30 Days (1969-12-02) :CURRENT
2018-01-03 (1514898000) 
2018-01-19 (1516280400) 
-30 Days (1969-12-02) :CURRENT
2018-01-05 (1515070800) 
2018-01-19 (1516280400) 
-30 Days (1969-12-02) :CURRENT
2018-01-12 (1515675600) 
2018-01-19 (1516280400) 
-30 Days (1969-12-02) :CURRENT
2018-01-18 (1516194000) 
2018-01-19 (1516280400) 
-30 Days (1969-12-02) :CURRENT
2018-01-18 (1516194000) 
2018-01-19 (1516280400) 
-30 Days (1969-12-02) :CURRENT

2 个答案:

答案 0 :(得分:0)

<?php
    $todaysDate = date_format(date_create_from_format('d/m/y', '19/01/18'), 'Y-m-d' );// Using date 
    $todaysDate = strtotime($todaysDate);
    echo $todaysDate . PHP_EOL;
    $todaysDate = date("Y-m-d", strtotime("-30 days", $todaysDate));
    echo $todaysDate;

输出:

1516316400

2017年12月20日

在这一行

$todaysDate = date("Y-m-d", strtotime("-30 days", $todaysDate));

$ todaysDate需要是时间戳而不是日期字符串,这是错误

请参阅http://php.net/strtotime

答案 1 :(得分:0)

<?php
    function dateDiff($dateStringFromDB){
    $today     = new DateTime("Now");
    $db_string = new DateTime($dateStringFromDB);
    $days      = $today->diff($db_string)->format('%d'); 

    return $days;
    }
?>

上述函数计算当前日期与传递给函数的任何日期之间的差异,并返回天数。 例: 如果$ dateStringFromDB是17/04/2018而$今天是15/04/2018,它会将$ days的值返回为2。

使用:

echo dateDiff($dateStringFromDB);

您现在可以将结果用于任何您想要的内容。