4

我必须将日期格式转换为mm-dd-yyyy我不知道当前的日期格式是什么它是动态的,所以如果我已经有动态日期格式,mm-dd-yyyy那么date()函数将返回低于 outout

    $date='02-13-2011';
    echo date('m-d-Y',strtotime($date));

输出是

  01-01-1970

?>

http://codepad.org/AFZ6jel7

所以我必须检查日期是否已经存在,mm-dd-yyyy然后不要应用日期格式。有没有其他方法可以做到这一点?可能在这些函数中传递另一个参数或类似的东西。

谢谢。

4

2 回答 2

8

我强烈怀疑这是导致问题的原因:

m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。

(在strtotime 文档中找到。)

你有破折号分隔符,所以它假设 dmy 格式,将其解析为 13 个月,因此实际上失败了。

如果不是 PHP 开发人员,我能想到的选项:

  • 如果有一个函数可以让您明确说明字符串的格式,请使用它。

    例如DateTime::createFromFormat()

  • 更改格式以使用斜杠
  • 更改格式以使用 dmy 而不是 mdy
于 2011-02-24T07:27:52.087 回答
4

用 / 替换 mdY 会有所帮助。

echo date('m-d-Y',strtotime(str_replace('-', '/', $date)));
于 2011-02-24T07:29:38.690 回答