2015-01-12 3 views
0

Привет, Я пытаюсь исправить старый фрагмент кода, созданный другим разработчиком. Потратил время, исправляя его для работы с mysqli. В любом случае последнее, что в моем списке, - это исправить ошибку даты. фактической ошибки нет, но если вы отправите форму с действующей датой, она всегда отображается в таблице как 01-01-1970 Ниже приведен фрагмент кода, который форматирует дату. Дата вводится в формате DD-MM-YY.PHP date ввод как 1970

$arr[$i] = strftime("%Y-%m-%d", strtotime($date)); 

В результате до сих пор всегда 01-01-1970

здесь некоторые у попыток фиксируя все с тем же выходом:

$arr[$i] = $date; 

$arr[$i] = strtotime($date); 

и множество вариаций настроек strftime!

+0

Попробуйте использовать объекты DateTime и [createFromFormat] (http://www.php.net/manual/en/datetime.createfromformat.php) –

+1

Можете ли вы предоставить нам 'var_dump (дата $)'? – Dencker

+0

@ Kieranmv95, если вы пытаетесь вставить текущую дату (как в сегодняшнюю дату), вы можете просто использовать ** 'NOW()' ** в запросе MySQL, и он позаботится об этом для вас, если его будущее или прошлой дате, тогда вам придется отформатировать его для MySQL, который принимает его как «YEAR-MONTH-DAY», например «2015-01-12». – Prix

ответ

3

Вы считаете, что используете дату()?

string date (string $format [, int $timestamp = time() ]) 

http://php.net/manual/en/function.date.php

так ...

$arr[$i] = strftime("%Y-%m-%d", strtotime($date)); 

становится

$arr[$i] = date("Y-m-d", strtotime($date)); 
+0

Аналогичная проблема с этим – Kieranmv95

+0

вы можете попробовать var_dump ($ arr [$ i]) и посмотреть, что это такое? Также проверьте тип поля вашего столбца, он должен быть DateTime, если вы используете MySql – Duenna

0

Попробуйте использовать объекты DateTime и createFromFormat, так что вы можете явно определить формат вашего $date значения

$dt = DateTime::createFromFormat('d-m-y',$date); 
$arr[$i] = $dt->format("Y-m-d"); 
Смежные вопросы