正确确定日期字符串是否为该格式的有效日期

马蒂·华莱士

我从API收到日期字符串,其格式为yyyy-mm-dd

我目前正在使用正则表达式来验证字符串格式,这种方法可以正常工作,但是我可以看到某些情况,根据字符串,它可能是正确的格式,但实际上是无效的日期。2013-13-01,例如。

PHP中是否有更好的方法来接收诸如之类的字符串,2013-13-01并确定该日期是否为格式的有效日期yyyy-mm-dd

阿马尔·穆拉利(Amal Murali)

您可以DateTime为此目的使用类:

function validateDate($date, $format = 'Y-m-d')
{
    $d = DateTime::createFromFormat($format, $date);
    // The Y ( 4 digits year ) returns TRUE for any integer with any number of digits so changing the comparison from == to === fixes the issue.
    return $d && $d->format($format) === $date;
}

[功能取自这个答案也在php.net上最初由Glavić撰写]


测试用例:

var_dump(validateDate('2013-13-01'));  // false
var_dump(validateDate('20132-13-01')); // false
var_dump(validateDate('2013-11-32'));  // false
var_dump(validateDate('2012-2-25'));   // false
var_dump(validateDate('2013-12-01'));  // true
var_dump(validateDate('1970-12-01'));  // true
var_dump(validateDate('2012-02-29'));  // true
var_dump(validateDate('2012', 'Y'));   // true
var_dump(validateDate('12012', 'Y'));  // false

演示!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python中得到的日期字符串有效的日期格式

判断字符串是否为有效日期的最快方法

解析前确定字符串是否为有效日期

Haskell-parseTime:如何验证日期字符串的格式和有效性

如何在JS中验证字符串是否为有效日期

确定字符串在C中是否为有效的wchar_t *

确定值是否为字符串的最有效方法

具有相同格式的字符串未被识别为有效日期时间

检查给定的字符串是否为转换DateTime的有效格式字符串

字符串转换为有效日期

如何在Kotlin中将输入字符串验证为有效日期?

如何将欧洲格式的字符串日期转换为有效的mysql日期格式?

如何使用Javascript确定给定日期和TimeZone的夏时制是否有效?

使用数字格式检查给定的字符串是否为有效货币

字符串日期函数中的“字符串未被识别为有效的日期时间格式”?

如何在SQL Server 2008中将字符串日期转换为有效的日期格式?

如何检查表示时间戳记的字符串在Java中是否为有效日期?

检查任何给定的字符串是否是有效日期

检查字符串在XSLT中是否为有效日期

AngularJS输入类型= datetime-local:期望ISO-8601-有效的日期字符串为日期

来自日期的字符串有效,来自字符串的日期无效

是否存在确定字符串是否为有效连接字符串的可接受方法?

字符串未被识别为有效的日期时间格式 dd/MM/yyyy

检查字符串是否为有效日期

使用时刻检查字符串是否为有效日期

将特定日期字符串转换为日期时间时,字符串未被识别为有效的日期时间

PHP Carbon 从字符串格式确定日期类型

从字符串的有效日期时间转换

确定格式为“hh:mm”的字符串是否为有效日期