【发布时间】:2013-03-18 07:06:22
【问题描述】:
我正在为验证库进行日期验证。日期格式和包含要验证的日期的变量将提供给库。
$validator->validate( $_POST['date'], 'm/d/y' );
使用DateTime::createFromFormat() 进行基本验证非常容易
if ( DateTime::createFromFormat( $format, $date ) !== false ) {
// "valid" date
}
我的问题是,使用此方法无效的日期,例如 23/23/23 过去,因为 DateTime 类将移动日期并将其设置为 2024-11-23。我知道checkdate() 的存在,但不知道格式我看不到提取原始月/日/年的方法。
关于如何验证这样的日期的任何想法?
【问题讨论】:
-
是否有机会限制可能的日期字符串的变体?
-
@axel.michel - 我宁愿不
-
如果您不知道格式,那么您会产生歧义。 1/2/13 是 2 月 1 日(欧洲格式)还是 1 月 2 日(美国格式)?您可以明确地解决一些问题,例如 23/9/13,但每个月的前 12 天都是模棱两可的。这不包括以 2 位数年份开头的日期:13/1/2 = 2013 年 1 月 2 日。
标签: php validation date datetime language-agnostic