PHP中计算指定格式的两个日期之间的天数差异的最佳方法(日期格式独立的方法)是什么?
我尝试了以下功能:
function get_date_offset($start_date, $end_date)
{
$start_time = strtotime($start_date);
$end_time = strtotime($end_date);
return round(($end_time-$start_time)/(3600*24));
}它在linux机器上正常工作,但是当在windows下运行时,strtotime会返回'‘。
编辑
输入日期为mm/dd/yyyy格式,但我想让它接受$format作为参数。
我只需要几天内的不同。
发布于 2008-12-23 14:56:41
如果您不需要或不能使用Zend Framework或梨包,请尝试此功能,我希望这会有所帮助:
function dateDifference($date1, $date2)
{
$d1 = (is_string($date1) ? strtotime($date1) : $date1);
$d2 = (is_string($date2) ? strtotime($date2) : $date2);
$diff_secs = abs($d1 - $d2);
$base_year = min(date("Y", $d1), date("Y", $d2));
$diff = mktime(0, 0, $diff_secs, 1, 1, $base_year);
return array
(
"years" => abs(substr(date('Ymd', $d1) - date('Ymd', $d2), 0, -4)),
"months_total" => (date("Y", $diff) - $base_year) * 12 + date("n", $diff) - 1,
"months" => date("n", $diff) - 1,
"days_total" => floor($diff_secs / (3600 * 24)),
"days" => date("j", $diff) - 1,
"hours_total" => floor($diff_secs / 3600),
"hours" => date("G", $diff),
"minutes_total" => floor($diff_secs / 60),
"minutes" => (int) date("i", $diff),
"seconds_total" => $diff_secs,
"seconds" => (int) date("s", $diff)
);
}发布于 2008-12-23 11:54:28
PEAR Date类提供了各种特性,用于查找日期之间的差异以及大约1000个其他事物。它的文档是在这里..。
发布于 2008-12-23 11:53:21
PHP的问题在于它没有明确的DateTime类型。您可以使用Unix时间戳或内置的DateTime类,但它们的功能非常有限。我希望有一些第三方类,更广泛地支持日期时间计算,但我还没有找到它。
使用Unix时间戳进行日期(而不是时间)计算也很棘手。您必须放弃时间部分,但简单地重置到00:00是不安全的,因为夏时制(DST)。DST的效果是,每年有两天的时间不完全是24小时。因此,在加/减日期时,可能会得到一个与3600*24不相等的值。
我建议找一个第三方阶级,有适当的支持所有这些东西。日期/时间计算在其丑陋之处是令人敬畏的。:P
https://stackoverflow.com/questions/388673
复制相似问题