在使用 Carbon 保存到数据库之前,尝试将 JQuery Datepicker 日期格式“dd-mm-yy”转换为 MySQL 日期格式“YYYY-MM-DD”。
我在插入数据之前尝试过在存储方法中使用Carbon,但仍然没有成功,它将日期保存为“0000-00-00”。
HTML:
<input type="text" name="reg_date" id="regdate" value="{{ old('reg_date', date('d/m/Y')) }}">
JQuery:
<script>
$(function(){
$("#regdate").datepicker({
dateFormat: 'dd-mm-yy',
changeMonth: true,
changeYear: true,
showAnim: 'slideDown'
});
});
</script>
Controller :
use Carbon\Carbon;
public function store(Request $request)
{
$data = $request->validate([
'reg_date' => 'required',
'first_name' => 'required|alpha',
'last_name' => 'required|alpha',
]);
$object = new ModelName();
$regdate = 'reg_date';
$object->date = \Carbon::createFromFormat('d-m-Y', $regdate)->format('Y-m-d');
ModelName::create($data); // create() method to insert data to database.
}
日期应以“YYYY-MM-DD”格式保存到数据库中。
PS: Data type is 'DATE'.
最佳答案
以今天的日期为例,JQuery Datepicker 格式为 dd-mm-yy
在我看来,它会显示为 10-08-19
.
但是在您的 Carbon 声明中,您使用的是 d-m-Y
,预计年份为 4 位数 10-08-2019
.
尝试将输入格式更改为 d-m-y
来说明 2 位数的年份。
$object->date = \Carbon::createFromFormat('d-m-y', $regdate)->format('Y-m-d');
有关 PHP 日期格式的更多信息:
https://www.php.net/manual/en/function.date.php
编辑:其他问题,以及根据评论所做的更改。
public function store(Request $request)
{
$request->validate([
'reg_date' => 'required',
]);
// get the entire request as an array
$data = $request->all();
// correct the date format
$data['reg_date'] = \Carbon::createFromFormat('d-m-y', $data['reg_date'])->format('Y-m-d');
// create a new model
$model = ModelName::create($data);
}
编辑2:通过键处理多个日期。
$keys = ['reg_date','sell_date','purchase_date'];
foreach ($keys as $key) {
$data[$key] = \Carbon::createFromFormat('d-m-y', $data[$key])->format('Y-m-d');
}
关于jquery - 使用 Laravel Carbon 将日期保存为 MySQL 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57444535/