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中iconv函数使用方法
May 24 PHP
php&mysql 日期操作小记
Feb 27 PHP
PHP中extract()函数的妙用分析
Jul 11 PHP
用php来改写404错误页让你的页面更友好
Jan 24 PHP
解密ThinkPHP3.1.2版本之模板继承
Jun 19 PHP
PHPMailer发送HTML内容、带附件的邮件实例
Jul 01 PHP
PHP函数in_array()使用详解
Aug 20 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
php采集内容中带有图片地址的远程图片并保存的方法
Jan 03 PHP
PHP+Ajax实现验证码的实时验证
Jul 20 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
Sep 11 PHP
php将html转为图片的实现方法
May 19 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实现图片缩略图的方法
2016/03/29 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
jquery处理json数据实例分析
2014/06/03 Javascript
nw.js实现类似微信的聊天软件
2015/03/16 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
2016/09/16 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
Angular2 组件间通过@Input @Output通讯示例
2017/08/24 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
python实现批量下载新浪博客的方法
2015/06/15 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
python 数据的清理行为实例详解
2017/07/12 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
Python WEB应用部署的实现方法
2019/01/02 Python
python标记语句块使用方法总结
2019/08/05 Python
Django学习之文件上传与下载
2019/10/06 Python
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
澳洲国民品牌乡村路折扣店:Country Road & Trenery Outlet
2018/04/19 全球购物
党风廉政建设责任书
2014/04/14 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
政工例会汇报材料
2014/08/26 职场文书
迎新生晚会主持词
2015/06/30 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
Ruby处理CSV数据方法详解
2022/04/18 Ruby
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL