由于当前月/年是2012年1月,为什么以下代码将在2011年12月而不是2011年11月返回?
echo date("F Y", strtotime("-2 months"));
Run Code Online (Sandbox Code Playgroud)
这是在PHP 5.3.0上,如果它有所作为.
Ben*_*Lee 12
要获得您正在寻找的内容,您可以使用这个相当冗长的版本:
echo date("F Y", strtotime("first day of this month - 2 months"));
Run Code Online (Sandbox Code Playgroud)
您的原始版本的问题在此处详细描述:http://derickrethans.nl/obtaining-the-next-month-in-php.html.引用如下:
一遍又一遍的PHP用户抱怨下个月在PHP的日期字符串解析器中没有下个月,而是跳到下个月之后的那个; 如下例所示:
Run Code Online (Sandbox Code Playgroud)<?php $d = new DateTime( '2010-01-31' ); $d->modify( 'next month' ); echo $d->format( 'F' ), "\n"; ?>小脚本的输出将是March.3月显然不跟随1月,因为2月介于两者之间.但是,目前的行为是正确的.内部发生以下情况:
下个月将月份数(原来为1)增加一个.这使得日期为2010-02-31.第二个月(二月)在2010年只有28天,所以PHP自动更正了这一点,只是继续计算从2月1日起的天数.然后你在3月3日结束.格式化将逐年剥离,导致输出March.在使用完整日期格式回显日期时可以很容易地看到这一点,该格式将于2010年3月3日输出:
这是为了增加月份,但在减去月份时反向相同; 没有11月31日,所以strtotime方法"纠正"它到12月1日.
| 归档时间: |
|
| 查看次数: |
1120 次 |
| 最近记录: |