【问题标题】:php date() returning wrong month for specific monthsphp date() 返回特定月份的错误月份
【发布时间】:2019-10-31 13:25:38
【问题描述】:

我非常困惑为什么使用以下代码在某些日期 date() 是错误的。下面列出的月份与以数字形式显示错误月份的代码示例相同。

echo $month = 2019 年 9 月

$month_explode = explode(' ', $month);

$month_explode[0] = 九月

$month_explode[1] = 2019

echo date("m", strtotime($month_explode[0])); = 10,即 10 月

接下来的几个月不工作...

  • 11 月返回 12
  • 9 月回归 10
  • 六月回归 07
  • 4月回归05
  • 2 月回归 03

我做错了吗?

【问题讨论】:

  • 为什么要拆分字符串 "September 2019" ?echo date("m", strtotime($month));工作正常。

标签: php


【解决方案1】:

当我正在审查我的问题时,它突然击中了我。我发布这个,也许这会帮助其他人处理同样的问题。

如果您只是在 strtotime 中使用月份,它将自动以数字形式附加当前的“日期”和“年份”。因为今天是 31 日,所以它会尝试计算不存在的 9 月 31 日。所以它会自动跳到下个月。列出的所有月份都相同。如果我将代码更改为以下代码,一切正常,因为每个月都有一个“1st”。

echo date("m", strtotime("first day of {$month_explode[0]}"));

【讨论】:

  • 为了让未来可能想要访问您的代码的人不那么困惑;我可以建议:echo date("m", strtotime("first day of {$month_explode[0]}"));
  • 我同意!更容易阅读。我更新了代码以反映您的建议。
猜你喜欢
  • 2012-02-21
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
  • 2014-12-01
  • 1970-01-01
相关资源
最近更新 更多