微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP 日期更改 strtotime 效果不佳

如何解决PHP 日期更改 strtotime 效果不佳

日期未正确更改格式(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 @shaedrichCarbon 非常有用,可以更优雅地完成这项工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。