今天我在处理日期时用头撞墙。 我正在循环一堆日期时间并将它们与当前日期进行比较以确定它们有多远。
所以我会返回“明天下午 4 点”、“昨天下午 3 点”、“今天中午 12 点”、“3 天前”、“3 天内”等内容。
一切正常,直到今天/明天/昨天。
当到达这些日期时,日期差异会返回愚蠢的东西,例如 -0 和 +0。 我的理论是,可以说…… future 23 小时,甚至 future 10 小时的日期,即使它们发生在“第二天”,也会返回 0 而不是 1。
不幸的是,date_diff 似乎不返回小数或允许我进行任何形式的舍入。
这里是一些示例代码:
$difference = $meeting_date->diff($current_date);
$difference = $difference->format('%R%a');
然后我检查这个差值整数,看看它是否为 0、-1、1、< -1 或 > 1。 我会在必要时处理前面的+号。
那些应该是-1或+1的,有时会返回-0或+0(..什么?)
此外,-0 并不 = 0,但根据 PHP 显然小于 -1。
S.O.S,有人帮忙。
我已阅读所有相关问题,这不是重复的问题,也与随机 6015 错误无关。使用 diff->days 也不是答案。这总是返回绝对值而不是负数,这会是一个问题。
最佳答案
嗯...我的方法是分割时间和日期显示。像这样的事情:
$meeting_day = DateTime::createFromFormat($meeting_date->format('Y-m-d'));
<p>// set $today to today's date at 0:00</p>
$diff = $meeting_day->diff($today);
这应该会给你一个可用的基于天的差异(用于渲染今天、昨天、明天等)。
关于php - date_diff 返回疯狂的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12160960/