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生成文件
Jan 15 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
Jun 23 PHP
PHP的Socket网络编程入门指引
Aug 11 PHP
Symfony2安装第三方Bundles实例详解
Feb 04 PHP
Linux php 中文乱码的快速解决方法
May 13 PHP
php实现的错误处理封装类实例
Jun 20 PHP
PHP重置数组为连续数字索引的几种方式总结
Mar 12 PHP
ThinkPHP5 验证器的具体使用
May 31 PHP
实例讲解PHP中使用命名空间
Jan 27 PHP
laravel 事件/监听器实例代码
Apr 12 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 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
Smarty安装配置方法
2008/04/10 PHP
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
canvas压缩图片转换成base64格式输出文件流
2017/03/09 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
easy_install python包安装管理工具介绍
2013/02/10 Python
python自定义解析简单xml格式文件的方法
2015/05/11 Python
python创建文件备份的脚本
2018/09/11 Python
python实现事件驱动
2018/11/21 Python
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
利用CSS3实现圆角的outline效果的教程
2015/06/05 HTML / CSS
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
广播节目策划方案
2014/05/23 职场文书
个人求职信范文
2014/05/24 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
员工辞职信范文
2015/03/02 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书