2

我想将日期24/09/2010格式转换dd/mm/yyyy2010-09-24格式yyyy-mm-dd

这有效:

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

但这不会:

date("Y-m-d",strtotime("24/09/2010")); // it returns '1970-01-01'

知道为什么吗?

4

3 回答 3

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);
于 2010-09-28T03:39:36.620 回答
2

根据 php,此处说明了有效的 php 格式。所以基本上你给的东西是无效的。

或者,您可以使用mktimedate_parse_from_formatdate_create_from_format

于 2010-09-28T03:40:38.980 回答
0

正如你所说, date("Ymd",strtotime("09/24/2010")) 会起作用,因为日期格式——“09/24/2010”是正确的,但“24/09/2010”不是正确的日期格式。你可以在这里找到有用的东西

于 2010-09-28T05:35:23.483 回答