strtotime()&date()将日期转换为与之前相同的格式时的奇怪行为

Sha*_*ngh 3 php date strtotime

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

    $date='02-13-2011';
    echo date('m-d-Y',strtotime($date));
Run Code Online (Sandbox Code Playgroud)

输出是

  01-01-1970

?>
Run Code Online (Sandbox Code Playgroud)

http://codepad.org/AFZ6jel7

所以我必须检查日期是否已经存在mm-dd-yyyy然后不应用日期格式.还有其他办法吗?可能正在传递这些函数中的另一个参数或类似的东西.

谢谢.

Jon*_*eet 7

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

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

(在strtotime文档中找到.)

你有破折号分隔符,所以它假定为dmy格式,将其解析为13个月,从而有效地失败.

选项我可以想到我的头脑,而不是PHP开发人员:

  • 如果有一个函数允许您明确说出字符串的格式,请使用它
  • 更改格式以使用斜杠
  • 更改格式以使用dmy而不是mdy