datetime-local输入字段值无法通过格式验证的问题求助
解决datetime-local输入字段的验证失败问题
我太懂这种明明格式看起来完全匹配,但验证就是通不过的抓狂感了!咱们来一步步拆解问题所在:
问题根源
你用的验证规则date_format:Y-m-dTH:i里藏着一个容易忽略的坑:在Laravel的日期格式解析逻辑中,T是一个特殊格式字符,它代表的是时区缩写(比如UTC、EST这类),而不是你输入里的字面量T。系统会把2001-03-13T13:30里的T当成时区标识来解析,自然就和你写的格式不匹配了。
正确的验证规则
只需要把格式里的T用反斜杠转义,告诉系统这是一个普通字符,而不是格式占位符:
'game_date_time' => 'required|date_format:Y-m-d\TH:i'
额外小提示
如果你不想纠结格式转义的细节,也可以用更灵活的验证方式:让Laravel自动把输入解析为Carbon实例,直接验证它是一个有效的日期时间:
'game_date_time' => 'required|date'
这个date规则会自动识别datetime-local输入的格式,同样能达到验证效果,而且更省心。
内容的提问来源于stack exchange,提问作者Tartar
相关产品推荐
相关产品推荐

