【问题标题】:strtotime back and forward onemonth is wrongstrtotime 前后一个月是错误的
【发布时间】:2013-09-19 14:54:32
【问题描述】:

我该如何解决这个问题?

我设置例如 (31.10.2013), 但脚本返回 (01.11.2013)

echo $currentDate = "2013-10-31";     
echo date("Y-m-D",strtotime("+1 month",strtotime("-1 month",strtotime($currentDate))));

Output is:
2013-10-31
2013-11-01

【问题讨论】:

  • 你不能在 1 个单独的动作中做到这一点。你需要写 2 个单独的,1 个用于 -1 月,1 个用于 +1 月...
  • @Dieter 好吧,OP 实际上可以。我确认,DateTime 类具有相同的行为。
  • 如果您在 10 月 31 日加上一个月,您将返回 12 月 1 日 - 没有 11 月 31 日,所以它会滚动到第二天。像这样的日期算术并不像你想象的那么简单。
  • 我也强烈建议使用 DateTime 对象,即使这不能解决您的直接问题。
  • @CORRUPT - 但什么是“一个月”?我猜想从 10 月 31 日减去一个月会尝试返回 9 月 31 日,因为没有,所以它会滚动到 10 月 1 日。

标签: php timezone strtotime


【解决方案1】:

一切都在您的代码中正常运行。问题是11月只有30天。因此,当您在月份中添加 1 时,日期会更改为 11-31-2013,而该日期不存在,因此会滚动到 12-1-2013。然后你减去一个月,返回 11-1-2013。我希望这可以解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多