2014-02-11 5 views
2

Я использую переменную, чтобы получить дату из базы данных, тогда я передаю эту переменную функции strtotime, чтобы получить нужный формат, но всегда возвращает неверную дату. возможно, есть проблема с передачей переменной в strtotime function.please, предложите мне, ребята, как мне получить правильную дату в правильном формате.strtotime() в php return always 01-01-1970

Вот что я пытаюсь сделать

$date = $fetch_user['date']; 
$newDate = date("d-m-Y", strtotime($date)); 
$day = date('l', strtotime($newDate)); 

echo $newDate; 
echo "-----"; 
echo $day; 
exit; 
+0

что ваш $ fetch_user [ 'дата'] –

+0

какую версию PHP вы usiing? – krishna

+0

можете ли вы разместить значение $ date? –

ответ

2

1 январь 1970 является так называемой Unix эпохи. Это дата, когда они начали отсчитывать время Unix. Если вы получите эту дату как возвращаемое значение, это обычно означает, что преобразование вашей даты в временную метку Unix вернуло (почти) нулевой результат. Таким образом, преобразование даты не выполняется. Скорее всего, потому, что он получает неправильный ввод.

Другими словами, ваш strtotime($date) возвращает 0, что означает, что $ date передается в неподдерживаемом формате для функции strtotime.

Так что вам нужно будет проверить себя $date, прежде чем называть strtotime вообще.

+0

$ date возвращает действительную дату, отличную от 1 января 1970 года, но все же ее не работает. Когда я использую дату в виде строки, ее работа отлично. – HimanshuSamantaray

0

01-01-1970 означает, что вы, вероятно, получите 0 в результате strtotime(). Вероятно, вы используете формат, который эта функция не может понять. В документации PHP говорится:

функция ожидает, что будет дана строка, содержащая английский формат даты в и будет пытаться разобрать этот формат в метку времени Unix (в количество секунд, прошедших с 1 января 1970 00:00: 00 UTC) по отношению к временной отметке , указанной в настоящее время, или текущему времени, если теперь не предоставляется.

Так что это не очень гибко. Вместо этого вы можете попробовать DateTime::createFromFormat. Взгляните на это documentation.

В принципе, вы должны указать формат строки даты, которую вы укажете в качестве ввода. Таким образом, вы можете использовать любой формат даты, который вы хотите.

Пример из php.net:

<?php 
$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');