php计算间隔日期,php 计算两个日期之间的间隔天数

本文章来给各位同学详细介绍关于php 计算两个日期这间的间隔天数实例,各位同学可参考,我们一般是把日期用strtotime转换,然后再进行算,这样可以精确到时分秒。

例1,直接把日期转换,代码如下:function daysbetweendates($date1, $date2){

$date1 = strtotime($date1);

$date2 = strtotime($date2);

$days = ceil(abs($date1 - $date2)/86400);

return $days;

}

例2,代码如下:<?php

function maketime($date) {

list($year, $month, $day) = explode('-', $date);

return mktime(0, 0, 0, $month, $day, $year);

}

$date1 = '2007-01-08';

$date2 = '2007-03-01';

$d = (maketime($date2) - maketime($date1)) / (3600 * 24);

echo "相差$d天";

?>

例3,PHP实现两个日期间隔的年、月、周、日数的计算,代码如下:<?php

function format($a, $b) {

//检查两个日期大小,默认前小后大,如果前大后小则交换位置以保证前小后大

if (strtotime($a) > strtotime($b)) list($a, $b) = array(

$b,

$a

);

$start = strtotime($a);

$stop = strtotime($b);

$extend = ($stop - $start) / 86400;

$result['extends'] = $extend;

if ($extend 

$result['daily'] = $extend;

} elseif ($extend <= 31) { //小于28天则返回周数,由于闰年2月满足了

if ($stop == strtotime($a . '+1 month')) {

$result['monthly'] = 1;

} else {

$w = floor($extend / 7);

$d = ($stop - strtotime($a . '+' . $w . ' week')) / 86400;

$result['weekly'] = $w;

$result['daily'] = $d;

}

} else {

$y = floor($extend / 365);

if ($y >= 1) { //如果超过一年

$start = strtotime($a . '+' . $y . 'year');

$a = date('Y-m-d', $start);

//判断是否真的已经有了一年了,如果没有的话就开减

if ($start > $stop) {

$a = date('Y-m-d', strtotime($a . '-1 month'));

$m = 11;

$y--;

}

$extend = ($stop - strtotime($a)) / 86400;

}

if (isset($m)) {

$w = floor($extend / 7);

$d = $extend - $w * 7;

} else {

$m = isset($m) ? $m : round($extend / 30);

$stop >= strtotime($a . '+' . $m . 'month') ? $m : $m--;

if ($stop >= strtotime($a . '+' . $m . 'month')) {

$d = $w = ($stop - strtotime($a . '+' . $m . 'month')) / 86400;

$w = floor($w / 7);

$d = $d - $w * 7;

}

}

$result['yearly'] = $y;

$result['monthly'] = $m;

$result['weekly'] = $w;

$result['daily'] = isset($d) ? $d : null;

}

return array_filter($result);

}

print_r(format('2012-10-1', '2012-12-15'));

转载随意,但请附上文章地址:-)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值