2016-01-14 3 views
0

Ниже приведен код для преобразования данных в Date.Сохранение некорректной даты в базе данных MySQL

$date = strtotime($request->input('DueDate')); 
$Job->DueDate = date('Y-m-d', $date); 
$Job->save(); 

Но это сохраняет данные как 0000-00-00

+0

Что $ request-> вход ('DueDate') возвращение? – jbafford

+0

Он возвращает '1/13/2000'. – Pankaj

+0

@PankajGarg Как вы думаете, что ожидает функция [date function] (http://php.net/manual/en/function.date.php)? –

ответ

0

Попробуйте это может быть: (Первый аргумент createFromFormat должен быть форматом, который принимает пользователь)

$dt = \DateTime::createFromFormat('m/d/Y', strtotime($request->input('DueDate'))); 
$Job->DueDate = $dt->format('Y-m-d'); 
$Job->save(); 

Приветствия ,,

0

Пусть говорят ваши DueDate правильно возвращать данные. Попробуйте следующее:

$date = Carbon::parse($request->input('DueDate'))->format('Y-m-d'); 
$Job->DueDate = $date; 
$Job->save(); 

Использование экземпляра углерода. Для получения дополнительной документации Carbon

1

Из PHP руководства strtotime()

Даты в м/д/г или DMY форматы снято неоднозначность, глядя на разделитель между различными компонентами: если сепаратор является слэш (/), то предполагается американский т/д/у; тогда как если разделитель является тире (-) или точкой (.), то предполагается европейский формат d-m-y. Если, однако, год указан в двухзначном формате, а разделитель - тире (-, строка даты анализируется как ymd.

Чтобы избежать потенциальной двусмысленности, лучше использовать ISO 8601 (YYYY-MM- DD). Дата или DateTime :: createFromFormat(), когда это возможно

Так самый простой мод для вашей ситуации была бы просто преобразовать слеши в дефис, как этот

$fixDate = str_replace('/', '-', $request->input('DueDate')); 
$date = strtotime($fixDate); 
$Job->DueDate = date('Y-m-d', $date); 
$Job->save();