Преобразование строки времени в PHP


Мне нужно преобразовать строку в формат даты, но это возвращает странную ошибку. Строка такая:

21 nov 2012

Я использовал:

$time = strtotime('d M Y', $string);

PHP вернул ошибку:

Notice:  A non well formed numeric value encountered in index.php on line 11

Чего мне здесь не хватает?

4 3

4 ответа:

Вы вызываете функцию совершенно неправильно. Просто передайте его

$time = strtotime('21 nov 2012')
2-й аргумент предназначен для передачи в метке времени, относительно которой Новое время является относительным. По умолчанию используется значение time().

Edit: , который вернет метку времени unix. Если вы хотите затем отформатировать его, передайте новую метку времени функции date.

Для преобразования строки даты в другой формат:

<?php echo date('d M Y', strtotime($string));?>

strtotime синтаксический анализ строки возвращает представленную метку времени UNIX. date преобразует метку времени UNIX (или текущее системное время, если она не указана) в указанный формат. Таким образом, чтобы переформатировать строку даты, вам нужно передать ее через strtotime, а затем передать возвращенную метку времени UNIX в качестве второго аргумента для функции date. Первый аргумент в date - это шаблон для выбранного вами формата. хотеть.

Нажмите здесь для получения более подробной информации о параметрах формата даты.

Вы используете неправильную функцию, strtotime возвращает только количество секунд с момента epoch, он не форматирует дату.

Попробуйте сделать:

$time = date('d M Y', strtotime($string));

Для более сложной строки используйте:

$datetime = DateTime::createFromFormat("d M Y H:i:s", $your_string_here);
$timestamp = $datetime->getTimestamp();