【发布时间】:2016-01-21 09:53:47
【问题描述】:
我有两个这样的日期时间(日期实际上是 $vars)
$startTime = \DateTime::createFromFormat('Y/m/d H:i', '2015/01/01 23:00');
$endTime = \DateTime::createFromFormat('Y/m/d H:i', '2015/01/02 01:00');
我遇到了一个(可能很漂亮)简单的问题:我如何确定这两个日期是否在不同的日历日?
我不能这样做 < 因为 2015/01/01 22:00 < 2015/01/01 23:00 也是如此。我也不能这样做:
$diff = $startTime->diff($endTime);
$days = $diff->format('%d');
echo $days;
因为它给了我0。
THIS 给了我一个关于如何做的想法,但是对于 javascript,php 的等价物是什么?
//更新
$startDate = $startTime->format('Y/m/d');
$endDate = $endTime->format('Y/m/d');
$diffDates = $startDate->diff($endDate);
$daysDiff = $diffDates->format('%d');
echo $daysDiff;
感谢 cmets,我认为现在这可能是正确的方法,但现在我得到了 Error: Call to a member function diff() on string
//更新以澄清我正在尝试做的事情
我只是想以天为单位,所以对于上述情况,它将是 '1'(尽管实际上只有 2 小时的差异),例如 '2015/01/01 23:00' and '2015/01/03 17:00' 将是 '2'。
【问题讨论】:
-
为什么不直接使用
Y-m-d之类的格式对它们进行格式化并进行比较? -
你到底想做什么?
-
我希望上面的例子给出 1 作为结果,因为这意味着这些日期时间之间有一天
-
$isSameCalendarDay = $d1->format('Y-m-d') === $d2->format('Y-m-d')? -
您需要在
DateTime对象上使用diff(),而不是format()产生的字符串。