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 相关文章推荐
PHP4.04简明安装
Oct 09 PHP
PHP+javascript模拟Matrix画面
Oct 09 PHP
PHP编码规范-php coding standard
Mar 16 PHP
删除数组元素实用的PHP数组函数
Aug 18 PHP
php实现图片缩放功能类
Dec 18 PHP
PHP使用json_encode函数时不转义中文的解决方法
Nov 12 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
Apr 03 PHP
Yii获取当前url和域名的方法
Jun 08 PHP
PHP使用GD库输出汉字的方法【测试可用】
Nov 10 PHP
PHP验证码无法显示的原因及解决办法
Aug 11 PHP
PHP中用Trait封装单例模式的实现
Dec 18 PHP
PHP7新增函数
Mar 09 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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
PHP中基本符号及使用方法
2010/03/23 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
微信跳一跳python代码实现
2018/01/05 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
Numpy数组的广播机制的实现
2020/11/03 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
优秀员工自荐书
2013/12/19 职场文书
2013的个人自我评价
2013/12/26 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
企业员工辞职信范文
2015/05/12 职场文书
2015年科普工作总结
2015/07/23 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
党员学习型组织心得体会
2019/06/21 职场文书