为什么PHP中的日期('Ym-d')的月份和日期位置错误?

dev*_*ate 0 php

我的服务器上的时区是正确的,但date()返回的月份和日期不在我期望的位置.

vdump(date_default_timezone_get());

string(19) "America/Los_Angeles"

vdump($_SESSION['StartDate']);

string(10) "11-10-2013"  //Nov 10
Run Code Online (Sandbox Code Playgroud)

然后我想将该字符串转换为日期,所以我这样做:

vdump(date('Y-m-d',strtotime($_SESSION['StartDate'])));

string(10) "2013-10-11"
Run Code Online (Sandbox Code Playgroud)

哪个是10月11日???

但是当我对'今天'做同样的事情时,它是我期望的格式:

vdump(date('Y-m-d',strtotime('today')));

string(10) "2013-11-18"  //Nov 18
Run Code Online (Sandbox Code Playgroud)

那么,如何在$ _SESSION中存储日期的正确位置获取日期和月份?为什么我看到这种行为?

jsz*_*ody 5

来自文档:

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

为避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime :: createFromFormat().

你正在使用破折号,所以它假设欧洲dmy为"11-10-2013"​​,即10月11日.