你的位置:
问答吧
-> PHP基础
-> 问题详情
怎么样计算2个日期之间相差几周
如题
如果2个日期在同一年中的话可以通过date("W",unix时间戳)来计算
但特别麻烦的就是2个日期不是在同一年中,可能2个日期相差几年
请高手指教
作者: gengle53022
发布时间: 2007-04-18
可以先算相差多少天 然后再算有多少个周啊
作者: 只爱一个人
发布时间: 2007-04-18
$year_f=2300;
$year_n=idate("Y");
if(!$year_n===0)
$count_r=($year_f-($year_n + (4-($year_n % 4))))/4;
else
$count_r=($year_f-$year_n)/4+1;
$week=(((($year_f-$year_n)+1)*365)+$$count_r)/7;
echo $count_r;
?>
不知道这样行吧
作者: 真爱有限
发布时间: 2007-04-18
CODE:
[Copy to clipboard]
//按标准时间计算
$time1 ='2006-1-1 15:14:12'; //时间1
$time2 =date('Y-m-d H:i:s'); //时间2
echo (dateDiff("D",$time1,$time2))." weeks";
function dateDiff($date_part,$start_date,$end_date)
{
$starttimestamp = @strtotime($start_date);
if (-1 === $starttimestamp) {
return false;
}
$endtimestamp = @strtotime($end_date);
if (-1 === $endtimestamp) {
return false;
}
switch(strtoupper(trim($date_part)))
{
case "D"://按天计算,返回天数/7
$starttimestamp = strtotime(date('Y-m-d 00:00:00', $starttimestamp));
$endtimestamp = strtotime(date('Y-m-d 00:00:00', $endtimestamp));
#return intval((($endtimestamp - $starttimestamp) / (60*60*24)));//返回天数
return intval((($endtimestamp - $starttimestamp) / (60*60*24))/7);//返回周/7
break;
default:
return FALSE;
}
}
作者: chinahtml
发布时间: 2007-04-18
先转化为时间戳,再求差值。
LS的
if (-1 === $starttimestamp) {
return false;
}
这一步是什么作用?
作者: coolsail
发布时间: 2007-04-18
strtotime -- 将任何英文文本的日期时间描述解析为 Unix 时间戳
作者: chinahtml
发布时间: 2007-04-18
查了下手册,strtotime在PHP 5.1.0 之前此函数在失败时返回 -1,
5.1.0之后 失败时返回 FALSE,不再是 -1。
作者: coolsail
发布时间: 2007-04-19