加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱故事小小网_铜陵站长网 (http://www.0562zz.com/)- 视频终端、云渲染、应用安全、数据安全、安全管理!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 有趣的日期逻辑解决

发布时间:2022-07-22 11:18:53 所属栏目:PHP教程 来源:互联网
导读:今天处理了一个很小的问题,需求是这样的,从周一到周日只能看到上周一到上周日的数据,这里直接从数据库里根据 date 字段查询 范围即可,但需要PHP生成 开始日期和结束日期. 最开始,我直接这么处理。 $start_date = date(Y-m-d , strtotime(-2 week monday));
  今天处理了一个很小的问题,需求是这样的,从周一到周日只能看到上周一到上周日的数据,这里直接从数据库里根据 date 字段查询 范围即可,但需要PHP生成 开始日期和结束日期.
 
  最开始,我直接这么处理。
 
  $start_date = date('Y-m-d' , strtotime("-2 week monday"));
  $end_date = date('Y-m-d' , strtotime("$start_date +6 day"));
  假如日期是 2011-07-19,$start_date= 2011-07-11 这样处理没有问题.
 
  如果日期是 2011-07-18,$start_date 则会等于 2011-07-04,还活在上周.
 
  于是换了种方法:
 
  $getWeekDay = date("w");
  $startDay = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") - $getWeekDay + 1 - 7, date("Y")));
  $endDay = date("Y-m-d", strtotime("+6 day $startDay"));
  假如日期是 2011-07-19,$start_date= 2011-07-11 这样处理没有问题,和我们期望的一样。
 
  如果日期是 2011-07-24,我们期望的 $start_date 是 2011-07-11,但实际返回的是 2011-07-18。
 
  不得已,我再改了下方法:
 
  $getWeekDay = date("N") ;
  $startDay = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") - $getWeekDay + 1 - 7, date("Y")));
  $endDay = date("Y-m-d", strtotime("+6 day $startDay"));
  这下就OK 了.

(编辑:我爱故事小小网_铜陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读