今天在与日期合作时,我的头靠在墙上。 我循环了一堆日期时间,并将它们与当前日期进行比较,以确定它们的距离。
所以我要回复'tomorow @ 4pm','昨天下午3点','今天中午12点','3天前','3天'等等。
一切正常,直到今天到达/ tomorow /昨天。
日期差异在到达这些日期时会返回-0和+0之类的愚蠢内容。 我的理论是,可以说......未来23个小时,甚至未来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->天也不是答案。这总是返回绝对而不是负面,这将是一个问题。
答案 0 :(得分:1)
嗯...我的方法是分开时间和日期显示。像这样:
$meeting_day = DateTime::createFromFormat($meeting_date->format('Y-m-d'));
// set $today to today's date at 0:00
$diff = $meeting_day->diff($today);
这应该会给你一个可用的日常差异(今天,昨天,明天等等)。
答案 1 :(得分:1)
为什么不将time()
与另一个可以使用strtotime()
您可以将您要比较的日期时间转换为strtotime()
现在你可以用秒来比较两者之间的差异,并根据你认为适合的天数,小时数等进行划分