【问题标题】:Strange behavior of Date Function日期函数的奇怪行为
【发布时间】:2012-09-05 10:02:57
【问题描述】:

我今天在 StackOverflow 上遇到了这个问题,但没有得到答案。

我的问题是

echo date('Y-m-d',strtotime('2012-september-09')); // output - 2012-09-01

echo date('Y-m-d',strtotime('09-september-2012')); // output - 2012-09-09

Codepad

我很困惑为什么第一种格式不能产生正确的答案。有什么帮助吗?

【问题讨论】:

    标签: php date strtotime


    【解决方案1】:

    来自manual

    如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则采用欧洲 d-m-y 格式

    【讨论】:

      【解决方案2】:

      这不是date 函数的行为,而是strtotime 的行为。 strtotime 只能处理Date Formats 手册页中列出的特定格式的日期。 09-september-2012 是此处列出的 dd ([ \t.-])* m ([ \t.-])* y 格式,但 2012-september-09 与任何受支持的格式都不匹配。

      【讨论】:

        【解决方案3】:

        我认为在你的代码中,

        echo date('Y-m-d',strtotime('2012-september-09'));
        

        strtotime('2012-september-09') 不是 strtotime() 日期函数的有效格式 ('2012-september-09')

        参考此链接http://www.php.net/manual/en/datetime.formats.date.php

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-15
          • 2020-05-02
          • 2014-03-18
          • 2014-11-23
          • 1970-01-01
          • 1970-01-01
          • 2018-12-25
          • 1970-01-01
          相关资源
          最近更新 更多