2017-03-03 20 views
1

如何在Symfony的REST包的@QueryParam注释中需要有效的DateTime字符串?Symfony REST包:添加日期到QueryParam需求

我现在有这样的: @QueryParam(name="createdFrom", requirements="2016-05-18T12:00:00+0000")

我想用一个表示valid date time格式的正则表达式。

+0

当您考虑闰年和各种各样的possibe日期格式时,通过正则表达式真正验证日期几乎是不可能的任务。我不知道symfony,但它不提供一种方法来要求某种预定义的数据格式,而不是一个正则表达式? –

+1

你是对的:最好的方法是需要一个字符串,然后检查是否可以使用'DateTime(string)'创建一个有效的日期' – numediaweb

回答

0

你可以做到这样:

@QueryParam(name="createdFrom", nullable=false, requirements="(19|20)[0-9][0-9]-(0[0-9]|1[0-2])-(0[1-9]|([12][0-9]|3[01]))T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]?[+|-][0-9][0-9][0-9][0-9]") 

应该正常工作。

这上面正则表达式适用于:2016-05-18T12:00:00 + 0000

这个网站,你可以用它来测试你的正则表达式:http://www.regexpal.com/1966

在这个网站有正则表达式的一些样品日期:http://www.regexlib.com/Search.aspx?k=datetime&c=0&m=0&ps=20&p=2

问候

0

其他:

/** 
* @Route("/blog/archive/{start}/{end}") 
* @ParamConverter("start", options={"format": "Y-m-d"}) 
* @ParamConverter("end", options={"format": "Y-m-d"}) 
*/ 
public function archiveAction(\DateTime $start, \DateTime $end)