Как преобразовать 10/25/2014 14:00 PM в 2014-10-25 14:00:00 в PHP?

date('Y-m-d H:i:s', strtotime("10/25/2014 14:00 PM"));

Возвращается

1970-01-01 03:00:00
1
Neeraj 4 Ноя 2014 в 11:39
10/25/2014 14:00 PM действителен, поскольку в формате am/pm применимо только 12 hours
 – 
gvgvgvijayan
4 Ноя 2014 в 11:42
Как мне преобразовать вышеуказанный формат m/d/Y H:i A в требуемый формат Y/m/d H:i:s?
 – 
Neeraj
4 Ноя 2014 в 11:43
Дата имеет 24-часовое представление с am/pm?
 – 
gvgvgvijayan
4 Ноя 2014 в 11:45
Формат неправильный. вам нужно сделать это вручную или просто заменить AM/PM
 – 
Sougata Bose
4 Ноя 2014 в 11:45
Вы дважды проверили принятый ответ со значениями AM
 – 
gvgvgvijayan
4 Ноя 2014 в 13:41

3 ответа

Лучший ответ

Я не знаю, каково происхождение этой даты (как это произошло), но вы можете использовать для этого классы DateTime:

$raw_date = '10/25/2014 14:00 PM';
// to disregard that PM escape it in the format
$new_date = DateTime::createFromFormat('m/d/Y H:i \P\M', $raw_date);
echo $new_date->format('Y-m-d H:i:s'); // 2014-10-25 14:00:00
1
Kevin 4 Ноя 2014 в 11:59
Что произойдет, если $raw_date = '10/25/2014 10:00 AM'; или $raw_date = '10/25/2014 10:00 am'; или $raw_date = '10/25/2014 14:00 pm';
 – 
gvgvgvijayan
4 Ноя 2014 в 13:39
$date = "10/25/2014 14:00 PM"; //Here is the date 24 hours format with am/pm
$date = substr($date, 0, -2); //Removed the am/pm from date


echo date('Y-m-d H:i:s', strtotime($date)); //then convert it to mysql date format

Примечание: Если вы используете это для столбца даты, это означает, что замените его тип данных на int и сохраните временную метку unix, которая будет более удобной, если год ограничен 1970-2038 годом. Чтобы не использовать более 2038, прочтите здесь

1
gvgvgvijayan 4 Ноя 2014 в 11:51
Это означает, что в php нет встроенной функции для достижения этой цели. мне придется применить этот хак?
 – 
Neeraj
4 Ноя 2014 в 11:52
Не похоже, что ваш формат не является универсально используемым форматом, поэтому прямой функции нет.
 – 
gvgvgvijayan
4 Ноя 2014 в 11:54

25.10.2014 14:00 ваш формат даты ввода неверен, вы используете 12-часовой формат, поэтому время будет 25.10.2014 14:00

1
Amit Kumar Sahu 4 Ноя 2014 в 11:58