PHP时间日期增减操作示例【date strtotime实现加一天(2)

//PHP手册上有一个这个方法,用来返回指定日期的周一和周日 function get_week_range($week, $year){ $timestamp = mktime(1,0,0,1,1,$year); $firstday = date("N",$timestamp); if($firstday >4){ $firstweek = strtotime('+'.(8-$firstday).' days', $timestamp); }else{ $firstweek = strtotime('-'.($firstday-1).' days', $timestamp); } $monday = strtotime('+'.($week - 1).' week', $firstweek); $sunday = strtotime('+6 days', $monday); $start = date("Y-m-d", $monday); $end = date("Y-m-d", $sunday); return array($start, $end); } //strtotime获取本周第一天和最后一天方法的BUG //PHP手册上有一个这个方法,用来返回指定日期的周一和周日 function get_week_range2($week, $year){ $timestamp = mktime(1,0,0,1,1,$year); $firstday = date("N",$timestamp); if($firstday >4){ $firstweek = strtotime('+'.(8-$firstday).' days', $timestamp); }else{ $firstweek = strtotime('-'.($firstday-1).' days', $timestamp); } $monday = strtotime('+'.($week - 1).' week', $firstweek); $sunday = strtotime('+6 days', $monday); $start = date("Y-m-d", $monday); $end = date("Y-m-d", $sunday); return array($start, $end); }

但在跨年的时候使用会有问题

例如2011年的12月31日周六和2012年1月1日周日,拿到的周一和周日完全不同

2011年12月31日拿合到的周一和周日分别对应
2011-12-26
2012-01-01

但2012年1月1日拿 到的周一和周日分别对应

2012-01-02
2012-01-04

原因为传进去的方法的周为第53周,但是年为2011年,所以认为2011的第53周,所以计算有误,解决方法为,

如果周为大于10(因为一月个月不可能有10周),且月份为1的时候,将年减1处理

if(date('m',$last_week_time) == '01' and $tmp_last_week > 10){ $last_week_year--; }

PS:这里再为大家推荐几款时间及日期相关工具供大家参考:

在线日期/天数计算器:

在线日期计算器/相差天数计算器:

在线日期天数差计算器:

Unix时间戳(timestamp)转换工具:

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php日期与时间用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/476ea66e1225d8de1abee1927dcc1499.html