php中一个有意思的日期逻辑处理


Posted in PHP onMarch 25, 2012

今天处理了一个很小的问题。
需求是这样的,从周一到周日只能看到上周一到上周日的数据。
这里直接从数据库里根据 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 了。
PHP 相关文章推荐
PHP设计聊天室步步通
Oct 09 PHP
PHP Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
php变量作用域的深入解析
Jun 03 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
Jun 22 PHP
PHP实现根据设备类型自动跳转相应页面的方法
Jul 24 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
May 09 PHP
php中时间函数date及常用的时间计算
May 12 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
Oct 18 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 PHP
php中http_build_query 的一个问题
Mar 25 #PHP
php正则表达匹配中文问题分析小结
Mar 25 #PHP
二招解决php乱码问题
Mar 25 #PHP
php引用地址改变变量值的问题
Mar 23 #PHP
奇怪的PHP引用效率问题分析
Mar 23 #PHP
php地址引用(php地址引用的效率问题)
Mar 23 #PHP
PHP遍历数组的几种方法
Mar 22 #PHP
You might like
浅析php与数据库代码开发规范
2013/08/08 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
Javascript实现的分页函数
2006/12/22 Javascript
jquery 锁定弹出层实现代码
2010/02/23 Javascript
textarea中的手动换行处理的jquery代码
2011/02/26 Javascript
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
vuex实现购物车功能
2020/06/28 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
深入理解Javascript中的this关键字
2015/03/27 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
水务局局长岗位职责
2013/11/28 职场文书
土地转让协议书
2014/04/15 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
商铺门前三包责任书
2014/07/25 职场文书
广告业务员岗位职责
2015/02/13 职场文书
校运会新闻稿
2015/07/17 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL
python图片灰度化处理的几种方法
2021/06/23 Python
详解Python flask的前后端交互
2022/03/31 Python
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL