今天处理了一个很小的问题。 需求是这样的,从周一到周日只能看到上周一到上周日的数据。 这里直接从数据库里根据 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 在PHP中,日期和时间处理是一项常见的任务,特别是在构建数据查询或者报表系统时。这个问题涉及到如何正确地获取上周一到上周日的日期范围。这里,我们探讨了三种不同的方法来解决这个问题。 原始的尝试是使用`strtotime()`函数配合日期字符串来计算开始和结束日期。`strtotime("-2 week monday")`将当前日期回溯两周,并找到那个周的第一天(周一),然后`" +6 day"`将这个日期往后推六天,得到周日。但是这种方法存在一个问题:如果当前日期是周一,那么`strtotime("-2 week monday")`会返回前两周的周一,而不是上周的周一。 为了解决这个问题,开发者尝试了第二种方法,使用`date("w")`获取当前日期是一周中的第几天,然后通过减去当前星期几的值并加上1(因为一周的第一天是0,不是1)再减去7来得到上周一的日期。接着,同样加上6天得到上周日。然而,这种方法在当前日期是周日时会出现问题,因为周日的`date("w")`值是0,这样会得到错误的开始日期。 开发者采用了第三种方法,使用`date("N")`代替`date("w")`。`date("N")`返回的是ISO-8601定义的星期几,其中周一为1,周日为7。这种方法避免了因为周日的值为0导致的错误,确保了无论在哪一天,都能正确地找到上周一和上周日。 总结起来,PHP中的日期处理需要注意日期函数的使用和逻辑的准确性。在处理日期范围时,尤其要考虑到边界条件,如一周的第一天和最后一天。`strtotime()`函数对于处理复杂的日期字符串非常方便,但可能不适用于所有情况。`date()`函数可以精确控制日期的格式,结合`mktime()`可以创建自定义日期。在处理星期几时,使用ISO-8601标准的`date("N")`通常比`date("w")`更安全,因为它避免了0值引发的歧义。在编程实践中,不断测试和调试是确保代码正确性的关键步骤。
- 粉丝: 4
- 资源: 941
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ModifyJSON.zip
- 各种系统编程和并行编程作业实验C和C++源码(含任务管理、进程间通信、并行算法等).zip
- 基于人工神经网络-随机森林-LSTM的径流预测项目源码(Python期末大作业)
- open固件库001.7z
- WinDDK 配置过的驱动模板
- WinDBG-10.0.16299.15.zip
- VMware-workstation-full-16.2.4-20089737.zip
- 章节2:编程基本概念之变量的声明-初始化-垃圾回收机制.rar
- 【java毕业设计】SpringBoot+Vue大学生就业(信息管理)服务平台 源码+sql脚本+论文 完整版
- 基于类关键路径的神经网络通道量化框架python实现源码.zip
评论0