问题描述
日期未正确更改格式(YYYYMM -> YYYYY-MM)。
我想将 YYYYMM (int) 更改为 YYYY-MM 以使用 HTML 月份输入
我是这样实现的...但 $s_month 总是以某种方式显示 2021-06
{{$test->month }}//202005
@PHP
$s_month= $test->month ? date('Y-m',strtotime($test-> month)):"";
@endPHP
{{$s_month}} // it displays 2021-06
<input name="s_month" type="month" value="{{$s_month?? ''}}"></input>
解决方法
Carbon 解决方案:
use Carbon\Carbon;
...
$s_month= $test->month ? Carbon::createFromFormat('Ym',$test->month)->format('Y-m') : "";
原生 DateTime
解决方案:
$s_month= $test->month ? DateTime::createFromFormat('Ym',$test->month)->format('Y-m') : "";
,
strtotime
(理所当然地)不足以解析没有分隔符的字符串,因为该值可以是任何值,毫秒、纳秒、纪元等。一种选择是添加分隔符:>
$originalDate = '202005';
$separateDate = substr($originalDate,4) . '-' . substr($originalDate,4,6); // 2020-05
此时您需要手动删除原始日期,但为了完整起见并确保我们已完成目标,我们可以在日期对象中使用此字符串。
$intendedDate = date('Y-m',strtotime($separateDate)); // 2020-05
或者,作为 mentioned by @shaedrich,Carbon 非常有用,可以更优雅地完成这项工作。