2012-11-30 4 views
2

Мне нужно преобразовать строку в формат даты, но она возвращает странную ошибку. Строка заключается в следующем:Преобразование определенной строки во времени в 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 

Что я здесь отсутствует?

+1

Вы должны смотреть на [ 'DateTime :: createFromFormat()'] (http://www.php.net/manual/en/datetime.createfromformat. PHP); Например: http://codepad.viper-7.com/0b0edk. Это позволяет вам точно указать формат, который вы ожидаете, избавляя вас от бессмысленного синтаксического разбора дат в стиле американского mm-dd - бесчеловечного глупого формата, если вы думаете об этом. – NullUserException

ответ

8

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

$time = strtotime('21 nov 2012') 

Второй аргумент предназначен для передачи в метке времени, что новое время относительно. По умолчанию он равен time().

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

0

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

Try делание:

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

Изначально -1 для попытки получить крайне плохой ответ FGITW. Downvote остается, потому что он не отвечает на вопрос. – NullUserException

+0

@NullUserException извините об этом. Я был в процессе ввода, и он отправил ... – Neal

+1

Все, что делает ваш код, отливает строку ввода как «21 ноября 2012», что не особенно полезно. Кажется, что OP хочет формат даты, который может использоваться для вычислений, а не для представления. – Sammitch

2

Чтобы преобразовать строку даты в другой формат:

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

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

Click here для получения более подробной информации о параметрах формата даты.

0

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

$datetime = DateTime::createFromFormat("d M Y H:i:s", $your_string_here); 
$timestamp = $datetime->getTimestamp(); 
Смежные вопросы