在一个应用程序的工作,其中正在使用的自举日期选择器捕捉一些输入字段。 AM显示在DD / MM / YY格式的格式,其正常工作的用户。在后端(构建Laravel PHP),我需要将其转换为YY-MM-DD格式的API中存储的日期字段时,这是所要求的格式。
在当我转储数据控制器我得到28/01/2019但是当我把它转换我得到1970-01-01。可能是什么问题?
标记
<div class="form-line registar love {{ $errors->has('dob') ? ' has-error' : '' }}">
<input type="text" placeholder="Date of Birth *" class="form-input dateTextBox" name="dob" id="dob" value="{{isset($user->dob) ? $user->dob : old('dob') }}" required>
</div>
JavaScript逻辑(引导日期选择器)
var maxBirthdayDate = new Date();
maxBirthdayDate.setFullYear( maxBirthdayDate.getFullYear() - 18 );
maxBirthdayDate.setMonth(11,31);
$( function() {
$( "#dob" ).datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd/mm/yy',
maxDate: maxBirthdayDate,
yearRange: '1900:'+maxBirthdayDate.getFullYear(),
});
});
控制器逻辑
public function validateDate(Request $request){
//dd($request->dob);
//28/02/2019 after dd() above
//Convert
$dobCv = date("Y-d-m", strtotime($request->dob));
dd($dobCv);
//1970-01-01 after dd() above
}
你可以简单地使用碳:
$dobCv = Carbon::createFromFormat('d/m/Y', $request->dob)->format('Y-m-d');
而且不要忘了进口:
use Carbon\Carbon;
你为什么不使用Laravel建立Carbon
$date = Carbon::createFromFormat('d/m/Y', $date);
然后,你可以做$date->toDateTimeString();
或任何你想与碳日期对象做
它编码的JSON格式,并将其发送到控制器
更改输入类型文本日期可能会帮助你。例如:<input type="date" .......>
你有问题,因为正斜杠(/)表示美国M / d / Y格式在strtotime
和你的榜样28/02/2019
28个月。所以strtotime
回报false
。我建议你使用Carbon
库如上面所说,或者如果你想用自己的方式与/
改变-
:
$dobCv = date("Y-d-m", strtotime(str_replace('/', '-', $request->dob)));