php中的日期差异? [复制]

Posted

技术标签:

【中文标题】php中的日期差异? [复制]【英文标题】:Date Difference in php on days? [duplicate] 【发布时间】:2010-12-28 18:15:32 【问题描述】:

有没有一种快速的方法来计算 php 中的日期差异?例如:

$date1 = '2009-11-12 12:09:08';
$date2 = '2009-12-01 08:20:11';

然后做一个计算,$date2减去$date1

我阅读了 php.net 文档,但没有运气。有什么快速的方法吗?

【问题讨论】:

@kiamlaluno - 这不是一个 exact 重复,因为它要复杂得多(该问题中的 OP 希望日期格式为“x 年,y 月,z天”等)。 【参考方案1】:

我建议使用 date->diff 函数,如下例所示:

   $dStart = new DateTime('2012-07-26');
   $dEnd  = new DateTime('2012-08-26');
   $dDiff = $dStart->diff($dEnd);
   echo $dDiff->format('%r%a'); // use for point out relation: smaller/greater

见http://www.php.net/manual/en/datetime.diff.php

【讨论】:

此功能需要 php 5.3 或更高版本,如 @txyoji 所述 使用$diffInDays = (int)$dDiff->format("%r%a");获取可以直接使用的值,例如“-2”或“2”(格式参数说明见php.net/manual/en/dateinterval.format.php) 如果您不小心将日期与时间放在一起,请将“-”更改为“:”... 为什么要把date()函数作为DateTime构造函数的第一个参数?函数调用date('2012-07-26') 将返回2012-07-26,所以我真的认为调用该函数没有意义。 <?php $datetime1 = date_create('2016-05-30'); $datetime2 = date_create('2016-05-30'); $interval = date_diff($datetime1, $datetime2); echo "difference " . $interval->days . " days "; 输出:差异 6015 天 我们如何才能获得同一日期的零天?【参考方案2】:

下面的代码将通过取出差值给出天数的输出 在两个日期之间..

$str = "Jul 02 2013";
$str = strtotime(date("M d Y ")) - (strtotime($str));
echo floor($str/3600/24);

【讨论】:

当我试图为我的JQuery datepicker 计算日期差异时,floor 给了我奇怪的结果。例如,floor((strtotime(((isset($_POST['date']) and strtotime($_POST['date'])) ? $_POST['date'] : date("Y-m-d"))) - strtotime(date("Y-m-d")))/3600/24)) 在 3 月 31 日和 3 月 21 日之间给我 9.9583333333333 的差值(所以 9 在我期望 10 时向下舍入)。我使用round函数解决了这个问题。 是的,乔纳森,你是对的。 嘿兄弟我有一个疑问,你能解释一下你的 echo 中 3600/24 的用途是什么 @SivaGanesh 他以小时 (/3600) 和天 (/24) 为单位制作时间戳【参考方案3】:

strtotime 会将您的日期字符串转换为 unix 时间戳。 (自 unix 时代以来的秒数。

$ts1 = strtotime($date1);
$ts2 = strtotime($date2);

$seconds_diff = $ts2 - $ts1;

【讨论】:

请注意,如果两个日期之间有时间变化(如春季或秋季),这可能会给您带来不同的结果。试试这个: echo strtotime('2013-03-30 21:00') - strtotime('2013-03-29 21:00'); echo strtotime('2013-03-31 21:00') - strtotime('2013-03-30 21:00');你得到 86400 和 82800。结果实际上是正确的。但是如果你除以 86400 来得到你需要考虑的天数(所以最好使用 date diff 函数)。 如果您使用的是现代版本的 php,请使用 adam 的解决方案。 PHP 有很多代码可以解决与时间相关的异常情况。

以上是关于php中的日期差异? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

计算MySQL和PHP中的日期差异

PHP MySQL 日期差异

获取 JavaScript 中两个日期之间的差异? [复制]

PHP 计算日期,月份和日期之间的差异

日期与php的差异

计算两个日期之间的差异并获得年值? [复制]