【发布时间】:2011-10-06 21:35:48
【问题描述】:
我正在尝试编写一个函数,该函数将尽快返回两个日期之间的天数。这个函数在我的代码中被调用了数千次trike>一百万次,将它优化到最大值将非常有帮助。日期是格式为yyyy-mm-dd 的字符串。
这是我迄今为止最好的:
protected function daysBetween($date1, $date2)
{
list($year1,$month1,$day1) = explode('-',$date1);
list($year2,$month2,$day2) = explode('-',$date2);
return (int)abs((mktime(0,0,0,$month1,$day1,$year1) -
mktime(0,0,0,$month2,$day2,$year2)) / 86400);
}
我怎样才能在尽可能短的时间内完成这项工作?
【问题讨论】:
-
但它是重复的吗?另一个问题比较 datetime 到 date,并且不关心效率。这个只关心效率,因为作者显然已经有了一个解决方案来获取日期增量。无论如何,lyoshenka,我想不出更好的方法。 mktime 几乎肯定比 strtotime 快得多,而且不使用 mktime 的解决方案也可能会更慢。我想你明白了。
-
@AurelioDeRosa 这个问题是不同的。您链接到的人只是想知道如何 去做,但是这个人想知道如何以尽可能最快的方式。
-
你看php.net/manual/en/datetime.diff.php了吗?人们希望这会更有效率......