当前位置: 首页 > 面试题库 >

PHP date()和strtotime()在31日返回错误的月份

傅兴平
2023-03-14
问题内容

我正在使用date()strtotime()函数在下拉列表中显示接下来的3个月。

PHP代码:

   echo date("m/Y",strtotime("+0 months")); 
   echo date("m/Y",strtotime("+1 months"));
   echo date("m/Y",strtotime("+2 months"));

但是,如果脚本在服务器日期为30日或31日时运行,则下个月(二月)将显示为三月。即上面的脚本应该返回

01/2012
02/2012
03/2012

但是,相反,它实际上显示

01/2012
03/2012
03/2012

那是因为2月没有30号或31号,所以脚本将“ 31/02”转换为“ 01/03”。

我已经阅读了strtotime()php.net上的页面,此问题已经提出,但是还没有任何有用的解决方案。因此,有人可以帮助我找到解决此问题的简单方法吗?提前致谢!


问题答案:

如文档中所述,您应该将当月第一天的日期作为第二个参数传递给strtotime()函数:

$base = strtotime(date('Y-m',time()) . '-01 00:00:01');
echo date('m/Y',strtotime('+0 month', $base));
echo date('m/Y',strtotime('+1 month', $base));
echo date('m/Y',strtotime('+2 month', $base));

看到它有效:http :
//ideone.com/eXis9

01/2012

02/2012

03/2012



 类似资料:
  • 问题内容: 执行以上代码段后,month的值为10而不是11。 问题答案: 月份从0而不是1索引,因此10是11月,而11是12月。

  • 问题内容: 所以我在这里呆了几个小时,它返回正确的Year和Day,但是由于某种奇怪的原因,它返回了错误的月份。我确定它是一个简单的修复程序,但我似乎无法弄清楚。 问题答案: 要获得本月的1-12数字: 最好指定所需/预期的时区。 类似地,呼叫和。 细节 它返回错误的月份 就像其他人所说的,在 1月至12月的 几个月中,他们疯狂地编号为0-11, 而不是1-12。在旧的日期时间类中,许多糟糕的设计

  • 所以我已经研究了几个小时了,它返回了正确的年和日,但是由于一些奇怪的原因,它返回了错误的月份。我确信这是一个简单的修复,但我似乎无法解决这个问题。

  • 问题内容: 例如: 版画1 乔达时间也是如此。 问题答案: Year of Year的定义是依赖的。 其他帖子中讨论了在美国如何定义。例如在德国(DIN 1355-1 / ISO 8601):一年的第一周*是新年中具有四天或以上的第一周。 *一周的第一天是星期一,一周的最后一天是星期日 JavaCalendar注重语言环境。例如: 印刷品: 添加 对于美国(我认为墨西哥也是如此),每年的1.星期是

  • 问题内容: 我尝试使用日历设置若干年后的简单日期: 字符串日期是此方法的参数。 我的问题是,否则日期返回还可以,但是月份数字完全错误,并且每次运行时看起来都越来越大!我想念的是什么? 问题答案: 测试

  • 问题内容: 代码: 输出: 我正在尝试将字符串转换为NSDate数据类型,但没有获得正确的值。我尝试了许多解决方案,但未返回正确的值。我需要yyyy-MM- dd格式(2016-04-02)与我的输入“ 2016-04-02”相同。如果有人可以帮上忙,那真是太好了。提前致谢 问题答案: 从字符串转换为NSDate时,如果未将时区设置为格式化程序,则将获得本地时区中日期的NSDate。我想您的时区是