strtotime('-x month'); 在涉及到月份修改的时候,可能不会得到预料的结果。
此为php的一个bug:
https://bugs.php.net/bug.php?id=27793
如:当前时间为: 2011-08-31 17:21:22
<?php
date_default_timezone_set('Asia/Shanghai');
$t = time();
print_r(array(
date('Y年m月',$t),
date('Y年m月',strtotime('- 1 month',$t)),
date('Y年m月',strtotime('- 2 month',$t)),
));
?>
上面代码输出:
Array
(
[0] => 2011年08月
[1] => 2011年07月
[2] => 2011年07月
)
而预期的结果是:
Array
(
[0] => 2011年08月
[1] => 2011年07月
[2] => 2011年06月
)
============================================
可以用如下方法解决:
<?php
date_default_timezone_set('Asia/Shanghai');
$first_day_of_month = date('Y-m',time()) . '-01 00:00:01';
$t = strtotime($first_day_of_month);
print_r(array(
date('Y年m月',$t),
date('Y年m月',strtotime('- 1 month',$t)),
date('Y年m月',strtotime('- 2 month',$t)),
));
?>
输出:
Array
(
[0] => 2011年08月
[1] => 2011年07月
[2] => 2011年06月
)
分享到:
相关推荐
在PHP编程语言中,strtotime()函数是一个非常实用的工具,它能够将人类可读的英文日期或时间描述转换为Unix时间戳。Unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。这个函数在处理日期...
在php中我想要获取时间戳有多种方法,最常用的就是使用time函数与strtotime()函数把日期转换成时间戳了,下面我来给大家分享一下时间戳函数 strtotime用法。获取指定的年月日转化为时间戳:pHP时间戳函数获取指定...
document.write(strtotime('last month')); document.write(strtotime('+1 weeks')); document.write(strtotime('+1 WEEK')); document.write(strtotime('+8 Days')); document.write(strtotime('-3 Hours 2 seconds...
`strtotime()` 在处理 "month" 关键词时,例如 "last month" 或 "-1 month",会基于当前日期来计算。但是需要注意的是,`strtotime("-1 month")` 在某些情况下可能会导致预期之外的结果,因为 PHP 会根据当前日期的...
`strtotime()` 是 PHP 中一个非常实用的函数,它能够将英文文本表示的日期时间解析成 Unix 时间戳。Unix 时间戳是从 1970 年 1 月 1 日 00:00:00 GMT 开始的秒数。`strtotime()` 函数的格式如下: ```php int ...
使用strtotime可以将各种格式的时间字符串转换为时间戳 转换常规时间格式 echo date('Y-m-d H:i:s', strtotime('2016-01-30 18:00')).PHP_EOL; echo date('Y-m-d H:i:s', strtotime('20160130180001')).PHP_EOL; ...
在PHP编程中,date和strtotime函数是处理日期和时间的常用工具。date函数用于格式化日期,而strtotime函数则可以解析英文文本的日期描述,并转换成Unix时间戳。Unix时间戳是一个自1970年1月1日(UTC/GMT的午夜)开始...
$timeStamp = strtotime("now +1 month"); ``` 这里的字符串参数 `"now +1 month"` 就是描述我们要计算的未来时间。在PHP中,`"now"` 代表当前时间。 ### 参数的灵活性 strtotime函数非常灵活,它能识别多种日期...
在PHP编程语言中,`strtotime()`函数是一个非常实用的日期时间处理函数,它能够将英文文本格式的日期或时间描述转换成Unix时间戳。Unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不包括闰秒。了解...
关于PHP 5.3.x版本中的strtotime()函数时区设定警告信息修复的知识点,可以从以下几个方面进行详细解析: 1. PHP版本与时区问题 在新版本的PHP中,特别是PHP 5.3.x版本,PHP内核对时区的处理变得更加严格。开发者...
在PHP编程语言中,`strtotime()`函数是一个非常实用的工具,它能够将各种英文文本表述的日期和时间解析成Unix时间戳。Unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不包括闰秒。这个函数的灵活性...
$lastday = date("Y-m-d", strtotime("$firstday +1 month -1 day")); return array($firstday, $lastday); } ``` 这个函数首先获取指定日期的月份的第一天,然后通过加1个月再减去1天来得到该月的最后一天。 ...
在PHP中,`strtotime()`函数是一个非常实用的工具,它能够将各种格式的日期和时间字符串转换为Unix时间戳,这是一种自1970年1月1日以来的秒数表示。然而,如标题和描述中提到的,`strtotime()`在处理大量数据和复杂...
同样的,我们可以用`strtotime`函数实现加一个月、加一年的操作,只需将字符串中的`day`替换为`month`或`year`即可。 除了基本的加减,还可以进行更复杂的日期操作,如获取今天、昨天、明天的日期: ```php echo ...
$date_previous_month = date('Y-m-d', strtotime("-$months_to_add months", strtotime($date))); // 减一个月 ?> ``` 注意:这种方法可能在涉及到非30天的月份时会有问题,比如从2月到3月跨越闰年时。 ### 其他...
节点StrToTime函数。 这段代码是由从。 这是原始代码的简单分支,但主要区别在于未扩展Date.prototype范围。 例子 var strtotime = require('strtotime'); strtotime('1 week'); strtotime('next friday'); ...