0

我试图从一个特定的时间戳开始逐月跳跃,但是当我从八月开始跳跃时,九月总是被跳过。从 8 月 31 日(1346389200)开始,跳跃 1 个月:

strtotime('+1 month', 1346389200);

产生 1349067600 - 这是 10 月 1 日。如果没有开始计算的开始日期,我已经阅读了有关 strtotime 犯错误的所有内容,但这可能是什么问题?谢谢

4

2 回答 2

2

8 月 31 日之后的一个月是 9 月 31 日,但是,由于它不存在,php 将结果强制为 1 Oktober。因此,您应该在第 1 天强制当前月份(当然,如果您只想要年份和月份):

strtotime('+1 month',strtotime(date("Y-m-1",1346389200)));

但是如果你使用 php >5.3 你可以使用更可靠的DateTime类和方法。

于 2012-09-18T20:51:34.897 回答
1

您可能不应该使用时间戳strtotime来进行比较。由于夏令时、闰年等原因,您将引入问题。最好使用 DateTime 和 DateInterval 类/函数以更彻底的方式执行此操作。

http://php.net/manual/en/datetime.add.php

于 2012-09-18T20:49:57.620 回答