如何解决用PHP-Carbon转换datetime-local日期格式失败的问题?
解决Carbon转换datetime-local格式失败的问题
嘿,我一眼就瞅出问题所在啦!你在createFromFormat里用的格式符不对——Carbon遵循的是PHP原生date()函数的格式规则,可不是你写的yyyy这种其他库的写法哦。
错误原因拆解
你原来的代码里用了yyyy-MM-ddTh:mm,这里踩了好几个小坑:
- 四位年份的正确格式符是
Y,而不是yyyy(yyyy是Java这类工具的写法) - 分钟的格式符是
i,不是mm(mm在Carbon里代表两位数字的月份) - 那个
T是字面量分隔符,直接写的话Carbon会把它当成时区缩写的格式符,所以得用\T转义一下
正确的写法
第一种方式,手动指定精准的格式:
\Carbon\Carbon::createFromFormat('Y-m-d\TH:i', $this->start_date)->format('Y-m-d H:i:s');
如果你嫌手动写格式麻烦,还有更省心的办法——用parse方法,Carbon能自动识别这种ISO标准的日期格式:
\Carbon\Carbon::parse($this->start_date)->format('Y-m-d H:i:s');
举个实际例子,如果你的$this->start_date是2024-06-10T14:25,上面两种方法都会输出2024-06-10 14:25:00,完全符合你的需求~
内容的提问来源于stack exchange,提问作者Faid
相关产品推荐
相关产品推荐

