验证输入是否采用此时间格式 - “HH:MM” [已关闭]

2022-08-30 13:43:14

我正在尝试用于验证时间输入是否采用此格式 - “HH:MM”preg_match


答案 1

您可以使用正则表达式来检查这一点。

12 小时:

preg_match("/^(?:1[012]|0[0-9]):[0-5][0-9]$/", $foo)

24小时:

preg_match("/^(?:2[0-3]|[01][0-9]):[0-5][0-9]$/", $foo)

如果您使用从 01:0024:59 的 24 小时制,请使用

preg_match("/^(?:2[0-4]|[01][1-9]|10):([0-5][0-9])$/", $foo)

答案 2

验证日期(和/或时间)而不引发异常的简单函数。它采用预期的日期格式作为参数:

function isValidDate(string $date, string $format = 'Y-m-d'): bool
{
    $dateObj = DateTime::createFromFormat($format, $date);
    return $dateObj && $dateObj->format($format) == $date;
}

它是如何工作的:它根据传递的日期将输入日期转换为PHP对象,然后将此对象与原始输入日期进行比较。如果它们匹配,则日期有效并具有预期的格式。DateTime$format

一些用法示例:

/* Valid Examples: */
isValidDate("2017-05-31");
isValidDate("23:15:00", 'H:i:s');
isValidDate("2017-05-31 11:15:00", 'Y-m-d h:i:s');

/* Invalid: */
isValidDate("2012-00-21");
isValidDate("25:15:00", 'H:i:s');
isValidDate("Any string that's not a valid date/time");

推荐