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 相关文章推荐
ThinkPHP分页类使用详解
Mar 05 PHP
php实现水仙花数示例分享
Apr 03 PHP
php读取大文件示例分享(文件操作类)
Apr 13 PHP
2014最热门的24个php类库汇总
Dec 18 PHP
WAMP环境中扩展oracle函数库(oci)
Jun 26 PHP
搭建基于Docker的PHP开发环境的详细教程
Jul 01 PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 PHP
Zend Framework教程之Resource Autoloading用法实例
Mar 08 PHP
yii2实现根据时间搜索的方法
May 25 PHP
PHP实现的微信公众号扫码模拟登录功能示例
May 30 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
Oct 21 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 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
使用php4加速网络传输
2006/10/09 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
PHP目录操作实例总结
2016/09/27 PHP
Discuz! 6.1_jQuery兼容问题
2008/09/23 Javascript
Javascript document.referrer判断访客来源网址
2020/05/15 Javascript
JS中的this变量的使用介绍
2013/10/21 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
详解angularjs实现echart图表效果最简洁教程
2017/11/29 Javascript
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
原生JavaScript实现的简单放大镜效果示例
2018/02/07 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
浅谈JavaScript节流和防抖函数
2020/08/25 Javascript
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
[43:41]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
Python常见异常分类与处理方法
2017/06/04 Python
python自动裁剪图像代码分享
2017/11/25 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
2021/01/08 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
大学生冰淇淋店商业计划书
2014/01/14 职场文书
和谐社区口号
2014/06/19 职场文书
爱护公物标语
2014/06/24 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
2014年教师学期工作总结
2014/11/08 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
护士辞职信怎么写
2015/02/27 职场文书
个人自荐书范文
2015/03/09 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
js 数组 fill() 填充方法
2021/11/02 Javascript