PHP中strtotime转换YYYYMM格式日期为Y-m格式结果异常如何解决
问题原因
strtotime() 函数无法直接解析纯6位数字的YYYYMM格式日期,传入的数值会被错误识别,最终输出非预期的格式化结果。
解决方案
有两种简单稳妥的实现方式:
- 方案1:直接字符串截取拼接,性能最高,不需要依赖日期解析函数
@php $s_month = ''; if ($test->month) { $month_val = (string)$test->month; // 前4位为年份,后2位为月份,直接拼接成YYYY-MM格式 $s_month = substr($month_val, 0, 4) . '-' . substr($month_val, 4, 2); } @endphp
- 方案2:补全为可识别的日期格式后再用日期函数处理,适合需要额外做日期校验的场景
给YYYYMM后拼接01补成YYYYMM01的完整日期格式,strtotime就可以正常解析:
@php $s_month = $test->month ? date('Y-m', strtotime($test->month . '01')) : ''; @endphp
两种方案输出的结果都符合HTML month 类型输入框的value格式要求,替换原有逻辑即可正常渲染正确的月份值。
内容的提问来源于stack exchange,提问作者conny
相关产品推荐
相关产品推荐

