问题的理解差异的日期时间和反转

问题描述 投票:0回答:1

我理解日期时间之间的区别有问题。我使用PHP DateTime类。

下面是我的代码来计算日期时间差的一小部分:

date_default_timezone_set("Asia/Kolkata");

function timeline_date($date)
{
    $today = new DateTime();
    $timeline_date = new DateTime($date);
    $interval = $today->diff($timeline_date);

    echo "<pre>";
    print_r($today);
    print_r($timeline_date);
    print_r($interval);
    echo "</pre>";
}
$date = "2019-02-02 04:36:02";
echo timeline_date($date);

什么是语句的含义:

$interval = $today->diff($timeline_date);

它与今天$ $减去timeline_date?

抑或是减去$今天从$ timeline_date?

我有这方面特别声明一个很大的困惑。我搜索在互联网上,但没有被它明确地提及。

此外$ timeline_date可以是过去或将来的日期,甚至今天的日期。所以,这很重要,我们应该从大量减去少量?

我从上面的代码下面的输出:

DateTime Object
(
    [date] => 2019-02-05 16:11:37
    [timezone_type] => 3
    [timezone] => Asia/Kolkata
)
DateTime Object
(
    [date] => 2019-02-02 04:36:02
    [timezone_type] => 3
    [timezone] => Asia/Kolkata
)
DateInterval Object
(
    [y] => 0
    [m] => 0
    [d] => 3
    [h] => 11
    [i] => 35
    [s] => 35
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 1
    [days] => 3
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)

我们可以在上面看到阵列[invert] => 1。什么是它的实际意义?如果我改变$日期:

$date = "2019-02-10 04:36:02";

然后[invert] => 0更改为1,为什么?这是否意味着,如果我们有过去的日期的差异,然后转化为0,如果我们有将来的日期,那么这个数组元素将是1?

php datetime
1个回答
3
投票

DateTime::diff给你两个日期之间的区别,有些明显。这并不重要,哪一个是更大或更小,增量是,无论是增量。然而,由此产生DateInterval对象不会注意哪一个是与DateInterval::$invert财产更大或更小:

是1,如果该间隔表示一个负的时间段,否则为0。见DateInterval::format()

该规则是,如果$b$a->diff($b)$a之前,$invert1。综观说DateInterval::format,你会看到:

R符号“ - ”负时,“+”正时 r符号“ - ”负时,空当正

所以,如果你不关心未来/过去的区别,你可以使用%R / %r格式化参数DateInterval::format输出“ - ”和/或“+”。如果你不关心,只是省略了该选项,这是无关紧要的。

© www.soinside.com 2019 - 2024. All rights reserved.