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】: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 有很多代码可以解决与时间相关的异常情况。【参考方案2】:我建议使用 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 天 我们怎样才能得到同一日期的零天?【参考方案3】:
下面的代码将通过取出差值给出天数的输出 在两个日期之间..
$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) 为单位制作时间戳以上是关于php中的日期差异? [复制]的主要内容,如果未能解决你的问题,请参考以下文章