收集两个日期之间的天数[重复]
Posted
技术标签:
【中文标题】收集两个日期之间的天数[重复]【英文标题】:Collect the number of days between two dates [duplicate] 【发布时间】:2012-06-07 14:05:33 【问题描述】:可能重复:How to find number of days between two dates using php
收集两个日期之间的天数,例如 2012 年 2 月 11 日 之间 2012 年 2 月 12 日
结果是天数=1天
【问题讨论】:
您已标记此 AJAX 和 PHP。您需要知道如何在 javascript 或 PHP 中执行此操作吗? 【参考方案1】:您可以使用 strtotime() 函数将日期转换为时间戳:
$date1 = strtotime("02/11/2012");
$date2 = strtotime("02/12/2012");
$difference = $date1 - $date2;
然后你有一个新的时间戳,以秒为单位的差异,所以你可以使用 date() 函数将其转换为天:
$days = date("d", $difference);
【讨论】:
【参考方案2】:PHP >= 5.3 你可以使用DateTime::Diff:
<?php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
?>
【讨论】:
这可能比使用 strtotime() 慢得多,但它是一种替代方法 ;) @Jeroen:虽然确实考虑了夏令时/闰年和其他因素...... 这会有什么不同? strtotime() 返回的 UNIX 时间戳只是自 1970 年 1 月 1 日以来的秒数,因此会自动“考虑”闰年。 @Jeroen:那条评论是关于操纵DateTime
对象的,我觉得这比基于每天86400 秒的计算更可靠。 DateTime 对象(以及它在 PHP 5.3 中的改进)更加稳定;这就是我的意思。
当然,如果你要操纵它,这是要走的路。【参考方案3】:
试试这个
function dateDiff ($d1, $d2)
return round(abs(strtotime($d1)-strtotime($d2))/86400);
该函数使用 PHP ABS() 绝对值始终返回一个正数作为两个日期之间的天数。
【讨论】:
【参考方案4】:echo (strtotime('02/12/2012') - strtotime('02/11/2012')) / (24*60*60);
这一行将两个日期转换为 unix 时间戳,减去它们,然后除以一天中的秒数。
【讨论】:
以上是关于收集两个日期之间的天数[重复]的主要内容,如果未能解决你的问题,请参考以下文章