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 相关文章推荐
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
Aug 08 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
Feb 17 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
windows下apache搭建php开发环境
Aug 27 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
Oct 17 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
php+Ajax无刷新验证用户名操作实例详解
Mar 04 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
Oct 17 PHP
浅谈PHP7中的一些小技巧
May 29 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面向对象编程快速入门
2006/12/14 PHP
php 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
2015/08/27 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
Json解析的方法小结
2016/06/22 Javascript
轮播的简单实现方法
2016/07/28 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
利用forever和pm2部署node.js项目过程
2017/05/10 Javascript
vue.js的安装方法
2017/05/12 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
微信小程序实现音频文件播放进度的实例代码
2020/03/02 Javascript
python中解析json格式文件的方法示例
2017/05/03 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
python实现定时提取实时日志程序
2018/06/22 Python
Python面向对象类的继承实例详解
2018/06/27 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
python绘制雷达图实例讲解
2021/01/03 Python
实例讲解使用HTML5 Canvas绘制阴影效果的方法
2016/03/25 HTML / CSS
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
优秀的2014年两会精神解读
2014/03/17 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL
简述Java中throw-throws异常抛出
2021/08/07 Java/Android