【发布时间】:2014-02-11 00:17:21
【问题描述】:
我将 startDate end 和 endDate 作为获取请求参数传递给方法, 在这里他们被解析为:
$startDate=$request->query->get('start');
$endDate=$request->query->get('end');
$logger->info('startdate is :'.$startDate.', endDate is : '.$endDate.'');
$start=new \DateTime($startDate);
$end=new \DateTime($endDate);
当我记录这两个参数时,它们可能是
startdate is: Wed Jan 12 2011 00:00:00 GMT 0100 (CET)
startDate is: Sat Jan 12 2013 00:00:00 GMT 0100 (CET)
到目前为止一切都很好,但是如果我从上面的字符串中记录 DateTime 的实例,它会返回
DateTime Object ( [date] => 0100-01-12 00:00:00 [timezone_type] => 2 [timezone] => GMT )
DateTime Object ( [date] => 0100-01-15 00:00:00 [timezone_type] => 2 [timezone] => GMT )
可以看到,DateTime不代表同一个Date
我可以从这些字符串中创建一个有效的 DateTime 吗?
更新:
我尝试使用 createFromFormat
喜欢
$startDate=$request->query->get('start');
$endDate=$request->query->get('end');
$start=new \DateTime::createFromFormat('D M d Y h:i:s e+O (T)',$startDate);
$end=new \DateTime::createFromFormat('D M d Y h:i:s e+O (T)',$endDate);
但这会导致异常:
FatalErrorException: Parse: syntax error, unexpected 'createFromFormat' (T_STRING), expecting variable (T_VARIABLE) or '$' in
我也试过了:
$start=new \DateTime(\DateTime::createFromFormat('D M d Y h:i:s e+O (T)',$startDate));
$end=new \DateTime(\DateTime::createFromFormat('D M d Y h:i:s e+O (T)',$endDate));
但这会从现在开始创建一个新的日期 (2014-01-21 12:28:57)
我只是不明白。
任何帮助,在此先感谢!
【问题讨论】:
-
只是为了文档,总是修剪你的时间戳。最后我有一个空格,使用
DateTime::createFromFormat()时出错。