strtotime () не возвращает правильное значение при указании даты в формате дд / мм / гггг - PullRequest
2 голосов
/ 28 сентября 2010

Я хочу преобразовать дату 24/09/2010 в формате dd/mm/yyyy в 2010-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'

Есть идеи почему?

Ответы [ 3 ]

2 голосов
/ 28 сентября 2010

в соответствии с php, действительные форматы php указаны здесь . В общем, то, что вы дали, неверно.

В качестве альтернативы вы можете использовать mktime , date_parse_from_format или date_create_from_format

2 голосов
/ 28 сентября 2010

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);
0 голосов
/ 28 сентября 2010

Как вы говорите, дата ( "Y-м-д", StrToTime ( "09/24/2010")) будет работать, потому что формат даты - "24.09.2010" правильный, но "24/09/2010" не правильный формат даты. Вы можете найти что-то полезное здесь

...