2012-01-20 9 views
0

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

Пожалуйста, посмотрите на код ниже: (я прокомментировал право ценности, которые я получаю, когда я отладки переменную)

Когда вход является, например, "0000-00-00 00:00:00"

$date1 = ($date['confirmed_at']); //value of $date1 is "0000-00-00 00:00:00" 
$date2 = strtotime($date1); //value of $date2 is "1" 
$date3 = date('y-m-d',$date2); //value of $date3 is "70-01-01" 

Когда вход является, например, "2011-09-12 8:57:26"

$date1 = ($date['confirmed_at']); //value of $date1 is "2011-09-12 08:57:26" 
$date2 = strtotime($date1); //value of $date2 is "1315817846" 
$date3 = date('y-m-d',$date2); //value of $date3 is "11-09-12" 

Я немного запутался со значениями, которые я получал ... Все, что я пытаюсь сделать, это взять дату, которая в настоящее время находится в «ГГГГ-ММ-ДД ЧЧ-ММ-СС» и преобразуйте его в формат «ГГГГ-ММ-ДД».

+0

Остерегайтесь: 'strtotime' не может представлять даты до 1970-01-01 00:00:00 GMT. День 0 года 0 AD - несколько тысяч лет назад. Если вам нужно представить даты до 1970 года, вы должны использовать [DateTime] (http://us2.php.net/manual/en/book.datetime.php). В противном случае простая проверка ошибок после вызова 'strtotime' - это все, что вам нужно. О, и используйте * капитал * Y, чтобы получить четырехзначный год. – Charles

+0

все даты, которые я пытаюсь получить, это те, что были около 2-3 лет назад ... единственная проблема, с которой я столкнулся, - это те, которые выглядят так: 0000-00-00 00:00: 00 –

ответ

1

Что вы видите в первом примере, является результатом того, что strtotime() возвращает UNIX временная метка, то есть количество секунд с 1 января 1970 года. Она просто не может вернуть ничего разумного для 0000-00-00 00:00:00.

Для использования формата YYYY-MM-DDdate('Y-m-d')

+0

Спасибо за ваше время! –

0

использование "дата ('Ут-d', $ date2)" для формата YYYY-MM-DD

0

Результат strtotime("0000-00-00 00:00:00") может зависит от версии PHP и ОС, поэтому используйте strtotime нулевой даты "0000-00-00 00:00:00" не имеет никакого смысла.

Смежные вопросы