【问题标题】:leading 0 in month parameter making wrong output月份参数前导 0 输出错误
【发布时间】:2013-10-03 13:21:12
【问题描述】:

为什么月份参数中的前导零输出错误?

echo date("Y-m-d", mktime(0, 0, 0, 09, 23, 2013));//output 2012-12-23
echo date("Y-m-d", mktime(0, 0, 0, 9, 23, 2013));//output 2013-09-23

【问题讨论】:

  • 因为09 不是有效值。
  • 09怎么可能不是有效值?

标签: php date mktime


【解决方案1】:

来自https://bugs.php.net/bug.php?id=55327

以 0 开头的数字是八进制。 08 是无效值。看 http://php.net/integer

如果您在号码前加上前导 0,则会将该号码标记为 Octal。八进制数字系统使用数字 0 到 7。因此,0809 不存在且无效。

第二个说法是正确的,也是正确的方法:

echo date("Y-m-d", mktime(0, 0, 0, 9, 23, 2013));

【讨论】:

    【解决方案2】:

    我们可以把这个参数做成一个字符串,它就可以工作了。

    试试这个:

    echo date("Y-m-d", mktime(0, 0, 0, '09', 23, 2013));//output 2012-12-23
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      相关资源
      最近更新 更多