以dd / mm / yyyy格式指定日期时,strtotime()不会返回正确的值

时间:2010-09-28 03:30:59

标签: php date-format

我想将格式24/09/2010的日期dd/mm/yyyy格式转换为格式为2010-09-24的{​​{1}}。

这有效:

yyyy-mm-dd

但这不是:

date("Y-m-d",strtotime("09/24/2010"));

知道为什么吗?

3 个答案:

答案 0 :(得分:2)

strtotime尽力猜测给定字符串时的含义,但它无法处理所有日期格式。在你的例子中,它可能认为你试图引用无效的第24个月,并返回0,该日期然后被视为unix时代(你得到的日期)。

您可以使用mktime()explode()函数解决此问题,如下所示:

$date = "24/09/2010";
$dateArr = explode("/",$date);
$timeStamp = mktime(0,0,0,$dateArr[1],$dateArr[0],$dateArr[2]);
$newFormat = date("Y-m-d",$timeStamp);

答案 1 :(得分:2)

根据php,有效的php格式是here。所以基本上你给的是无效的。

或者,您可以使用mktimedate_parse_from_formatdate_create_from_format

答案 2 :(得分:0)

正如你所说, 日期( “Y-M-d”,的strtotime( “2010年9月24日”)) 会有效,因为日期格式 - “09/24/2010”是正确的, 但“24/09/2010”不是正确的日期格式。 你可以找到有用的东西here