我理解日期时间之间的区别有问题。我使用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?
DateTime::diff
给你两个日期之间的区别,有些明显。这并不重要,哪一个是更大或更小,增量是,无论是增量。然而,由此产生DateInterval
对象不会注意哪一个是与DateInterval::$invert
财产更大或更小:
是1,如果该间隔表示一个负的时间段,否则为0。见
DateInterval::format()
。
该规则是,如果$b
在$a->diff($b)
是$a
之前,$invert
是1
。综观说DateInterval::format
,你会看到:
R
符号“ - ”负时,“+”正时r
符号“ - ”负时,空当正
所以,如果你不关心未来/过去的区别,你可以使用%R
/ %r
格式化参数DateInterval::format
输出“ - ”和/或“+”。如果你不关心,只是省略了该选项,这是无关紧要的。