在MySQL数据库中保存错误的日期

时间:2016-01-14 01:51:23

标签: php laravel laravel-4 laravel-5 laravel-5.1

我正在编写下面的代码,将数据转换为Date。

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

但是这会将数据保存为0000-00-00

3 个答案:

答案 0 :(得分:1)

来自strtotime()

的PHP手册
  

通过查看各个组件之间的分隔符来消除m / d / y或d-m-y格式的日期:如果分隔符是斜杠(/),则假设为美国m / d / y;而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式。但是,如果年份以两位数格式给出,而分隔符是破折号( - ,日期字符串被解析为y-m-d。

     

为避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime :: createFromFormat()。

因此,对于您的情况最简单的mod就是将斜杠转换为连字符,如此

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

答案 1 :(得分:0)

假设您的DueDate正确返回数据。试试这个:

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

使用碳实例。有关更多文档Carbon

答案 2 :(得分:0)

尝试这一点:( createFromFormat的第一个参数应该是用户收到的格式

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

干杯,,