手机
当前位置:查字典教程网 >编程开发 >php教程 >探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
摘要:使用PHP实现计算两个日期间隔的年、月、周、日数:复制代码代码如下:运行结果:Array([extends]=>75[monthly]=>2...

使用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<7){ //如果小于7天直接返回天数

$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'));

?>

运行结果:

Array([extends]=>75[monthly]=>2[weekly]=>2)

php 查询某天所在的周数及对应周的起始日期

复制代码 代码如下:

/**

* @file

* @version 1.1

* @author QQ83989686

* @date 2012-8-7 最后修改时间

* @brief

*/

//获取某个日期的 周数、周对应的开始结束时间

private function getWeekStartEndDay($day)

{

$g = strftime("%u",strtotime($day));

return array('week_num'=>strftime("%V",strtotime($day)),'week_start_day'=>strftime('%Y-%m-%d',strtotime($day)-($g-1)*86400),'week_start_day_cn'=>strftime('%Y年%m月%d日',strtotime($day)-($g-1)*86400),'week_end_day'=>strftime('%Y-%m-%d',strtotime($day) + (7-$g)*86400),'week_end_day_cn'=>strftime('%Y年%m月%d日',strtotime($day) + (7-$g)*86400));

}

【探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数】相关文章:

用PHP实现验证码功能

如何使用jQuery+PHP+MySQL来实现一个在线测试项目

如何使用PHP中的字符串函数

php使用cookie实现记住登录状态

PHP模拟SQL Server的两个日期处理函数

使用php的swoole实现高效安全的ftp服务器

PHP获取当前日期和时间及格式化方法参数

建立文件交换功能的脚本(三)

PHP使用flock实现文件加锁的方法

用PHP实现标准的IP Whois查询

精品推荐
分类导航