我正在开发 Laravel 4 中的一个应用程序,该应用程序需要用户输入英国格式日期(dd/mm/yyyy)。目前 Laravel 的Validator
类正在验证格式没有问题。但是,提供的某些日期也需要在未来或需要相互比较。目前after:
似乎正在根据美国日期格式进行评估,这没有多大帮助。
有什么方法可以Validator
识别我的日期格式,还是我必须先验证输入格式,转换日期然后再次验证它以检查它是否在未来?
谢谢。
我正在开发 Laravel 4 中的一个应用程序,该应用程序需要用户输入英国格式日期(dd/mm/yyyy)。目前 Laravel 的Validator
类正在验证格式没有问题。但是,提供的某些日期也需要在未来或需要相互比较。目前after:
似乎正在根据美国日期格式进行评估,这没有多大帮助。
有什么方法可以Validator
识别我的日期格式,还是我必须先验证输入格式,转换日期然后再次验证它以检查它是否在未来?
谢谢。
laravel 文档说:
根据 strtotime PHP 函数,验证中的字段必须是有效日期。
strtotime php 文档指出此函数以美国格式解析。但附加说明指出:
m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。
为避免潜在的歧义,最好尽可能使用 ISO 8601 (YYYY-MM-DD) 日期或 DateTime::createFromFormat()。
因此,我建议您强制使用 - 而不是 / (使用验证或使用 str_replace 过滤器),或者按照 php 文档中的建议创建使用 DateTime::createFromFormat() 的自定义验证器。
也许我会做一个推送请求,将默认验证器中的 strtotime 替换为 DateTime::createFromFormat() 如果它真的更可靠(需要先调查这两个)