以d / m / Y-H格式验证日期和时间:i:s?

时间:2017-03-07 14:56:45

标签: php regex validation date time

只是想验证以下日期07/03 / 2017-15:54:42以确保使用此格式但无法找到有效的正则表达式

3 个答案:

答案 0 :(得分:0)

我倾向于使用DateTime::createFromFormat来获取字符串和格式字符串,如果方法返回FALSE,则可以检查DateTime::getLastErrors。它比使用正则表达式有一些优势 - 它可以检查闰年和所有其他日期异常。

答案 1 :(得分:0)

一种非常简单且不准确的方法是使用如下所示的正则表达式:

/\d{2}\/\d{2}\/\d{4}-\d{2}:\d{2}:\d{2}/

它将简单地验证字符串是否具有由斜线,冒号和破折号分隔的正确数字位数。描述了构建正则表达式的更复杂方法here。您可以使用它并添加自己的部分进行时间验证,但使用四位数年份的模式,月份格式和日期格式的模式。

更可靠的方法是尝试从字符串中创建DateTime对象:

DateTime::createFromFormat('d/m/Y-H:i:s', '17/03/2017-15:54:42')
/* DateTime {#173
     +"date": "2017-03-17 15:54:42.000000",
     +"timezone_type": 3,
     +"timezone": "Asia/Jerusalem",
   }
*/

如果您使用错误的字符串进行尝试,则会得到false结果:

DateTime::createFromFormat('d/m/Y-H:i:s', '17.03/2017-15:54:42')
// false

答案 2 :(得分:0)

你要求的正则表达式可能是这样的:

(\d{2}\/){2}\d{4}-(\d{2}:){2}\d{2}

但是使用DateTime::createFromFormat()具有as exposed

的优势Wax Cage