资讯专栏INFORMATION COLUMN

strtotime的一个使用问题

LucasTwilight / 1189人阅读

摘要:我在开发过程中遇到这么这个问题,因为赶进度,没有记下来处理方案,在鸟哥的博客看到原理分析,很到位平时开发中总是急着处理问题,没有深入分析和记录问题。

我在开发过程中遇到这么这个问题,因为赶进度,没有记下来处理方案,在鸟哥的博客看到原理分析,很到位!平时开发中总是急着处理问题,没有深入分析和记录问题。
1、问题:

今天是2018-07-31 执行代码:date("Y-m-d",strtotime("-1 month"))
输出是2018-06-01?

2、分析:

先做-1 month, 那么当前是07-31, 减去一以后就是06-31.

再做日期规范化, 因为6月没有31号, 所以就好像2点60等于3点一样, 6月31就等于了7月1

2-1、验证
var_dump(date("Y-m-d", strtotime("2017-06-31")));
//输出2017-07-01

只要涉及到大小月的最后一天, 都可能会有这个问题

var_dump(date("Y-m-d", strtotime("-1 month", strtotime("2017-03-31"))));
//输出2017-03-03

var_dump(date("Y-m-d", strtotime("+1 month", strtotime("2017-08-31"))));
//输出2017-10-01

var_dump(date("Y-m-d", strtotime("next month", strtotime("2017-01-31"))));
//输出2017-03-03

var_dump(date("Y-m-d", strtotime("last month", strtotime("2017-03-31"))));
//输出2017-03-03
2-2、处理方案

PHP5.3之后的版本处理方式
”first day of” 和 “last day of”, 也就是你可以限定好不要让date自动”规范化”

var_dump(date("Y-m-d", strtotime("last day of -1 month", strtotime("2017-03-31"))));
//输出2017-02-28

var_dump(date("Y-m-d", strtotime("first day of +1 month", strtotime("2017-08-31"))));
////输出2017-09-01

var_dump(date("Y-m-d", strtotime("first day of next month", strtotime("2017-01-31"))));
////输出2017-02-01

var_dump(date("Y-m-d", strtotime("last day of last month", strtotime("2017-03-31"))));
////输出2017-02-28

使用mktime之类的, 把所有的日子忽略掉, 比如都限定为每月1号就可以了, 只不过就不如直接用first day来的更加优雅

参考资料:http://www.laruence.com/2018/...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30835.html

相关文章

  • 给你5分钟做完这8道日期题

    摘要:问题一获取下个月第一天日期二获取本月最后一天最后一秒的时间三获取年前本月的开始时间四获取下月第一个星期天五获取本月第二个星期五六获取两周前的今天的日期七获取天前的日期,排除非工作日排除周末八获取下周星期六的日期解答一如何获取下个月第一天日期 问题: 一:获取下个月第一天日期? 二:获取本月最后一天最后一秒的时间? 三:获取10年前本月的开始时间? 四:获取下月第一个星期天? 五:获取本...

    alphahans 评论0 收藏0
  • 强大strtotime函数

    摘要:处理时间的函数功能强大,相信大家都有目共睹,日常中如果涉及到很多时间处理方面的需求,函数的以下用法绝对让你面对时间处理不再发愁非常直观的一些用用法获取相比当前时间前天的时间戳这个取值可以随意改变相比于当前时间戳减去的时间当前日期的前天的 PHP处理时间的函数功能强大,相信大家都有目共睹,日常中如果涉及到很多时间处理方面的需求, strtotime函数的以下用法绝对让你面对时间处理不再发...

    zhaochunqi 评论0 收藏0
  • php常用时间戳

    摘要:能将任何英文文本的日期时间描述解析为时间戳结合或格式化日期时间获取指定的时间戳,实现所需要的日期时间。输出小时制时间的方法输出小时制时间的方法 strtotime(now) strtotime(today) strtotime(tomorrow) strtotime(yesterday) strtotime(date(Y-m-d, strtotime(+1 day))) st...

    coordinate35 评论0 收藏0
  • php计算两个时间相差天数、小时数、分钟数、秒数

    摘要:做减法得到值是相差的秒数,这个秒数对一天的秒数取余,则得到相差数。如果对取模,还对秒秒取余,则得到相关的小时和分钟数。 $startdate=2011-3-15 11:50:00;//开始时间 $enddate=2012-12-12 12:12:12;//结束时间 $date=floor((strtotime($enddate)-strtotime($startdate))/864...

    hersion 评论0 收藏0
  • PHP实现一个时间帮助类

    摘要:背景工作的过程中经常会遇到各种时间类的操作,因此封装了一个帮助工具类,提高代码的复用率主要功能根据相差的天数获取连续的时间段根据相差的天数获取所有连续的时间段转化查询条件根据两个日期获取连续的时间段根据开始和结束时间获取所 背景 工作的过程中经常会遇到各种时间类的操作,因此封装了一个帮助工具类,提高代码的复用率 主要功能 根据相差的天数获取连续的时间段 /** * 根据相差的...

    ky0ncheng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<