验证输入是YYYY-MM-DD HH:mm:ss格式?

sil*_*npi 2 php regex

我正在编写一个PHP脚本,它接受用户输入的值,必须是这样的.

2011-06-17 00:00:00
...
2011-06-17 23:59:59
Run Code Online (Sandbox Code Playgroud)

如何验证它确实是正确的输入?

Ale*_*sky 12

或者,在输入上使用strtotime(),然后在date()中使用所需的格式.这具有验证用户提供正确日期而不仅仅是正确格式的优点.也就是说,当有人在2月31日投入时,正则表达式检查不会被捕获.

$date = strtotime($input);
if ($date === false) {
    throw Exception('bad date');
}
$formatted = date('<whatever>', $date);
Run Code Online (Sandbox Code Playgroud)


Chr*_*ing 8

您正在寻找ISO 8601的验证.

以下是验证该格式的示例正则表达式:

^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$
Run Code Online (Sandbox Code Playgroud)

http://www.pelagodesign.com/blog/2009/05/20/iso-8601-date-validation-that-doesnt-suck/

或者更好,

Zend框架日期验证

例:

$validator = new Zend_Validate_Date(array('format' => 'yyyy-MM-dd HH:mm:ss'))
$validator->isValid('2011-06-17 00:00:00');
Run Code Online (Sandbox Code Playgroud)

  • 啊.多丑啊 这就是我们使用base-10表达base-60和base-24的结果. (2认同)