问题从自举日期选择器转换日期为不同的格式

问题描述 投票:3回答:5

在一个应用程序的工作,其中正在使用的自举日期选择器捕捉一些输入字段。 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
}
laravel date unix-timestamp
5个回答
1
投票

你可以简单地使用碳:

$dobCv = Carbon::createFromFormat('d/m/Y', $request->dob)->format('Y-m-d');

而且不要忘了进口:

use Carbon\Carbon;

3
投票

你为什么不使用Laravel建立Carbon

$date = Carbon::createFromFormat('d/m/Y', $date);

然后,你可以做$date->toDateTimeString();或任何你想与碳日期对象做


0
投票

它编码的JSON格式,并将其发送到控制器


0
投票

更改输入类型文本日期可能会帮助你。例如:<input type="date" .......>


0
投票

你有问题,因为正斜杠(/)表示美国M / d / Y格式在strtotime和你的榜样28/02/2019 28个月。所以strtotime回报false。我建议你使用Carbon库如上面所说,或者如果你想用自己的方式与/改变-

$dobCv = date("Y-d-m", strtotime(str_replace('/', '-', $request->dob)));

© www.soinside.com 2019 - 2024. All rights reserved.