我在Symofny2应用程序中的php方法中有一个varible作为字符串传递:
public function eventAllByScenarioAndDateAction($apiVersion, $scenario,$date, $options)然后,$date必须是格式为YYYY-MM-DD HH:MM:SS的DateTime类型,才能传递它,以便使用sql查询填充表。
我想检查一下传递的格式是否正确,所以我把控件:
$dateControl1=strtotime($date);然后是if语句:
if ($dateControl1 === false)但是,只有当我发送2013-33-01之类的内容时," if“才会设置为false,例如,如果我切断了HH:MM:SS,则设置为false
那么,我如何检查$date是如何传递给方法的,例如,如果我只有YYYY-MM-DD (但正确)或整个YYYY-MM-DD HH:MM:SS,那么它会有不同的行为吗
同样,如何丢弃与预期格式不同的格式(例如使用/而不是-etc)。
发布于 2013-10-23 22:01:39
没有必要那么具体。下面的代码运行得很好:
$foo = new DateTime("2013-01-01");
$bar = new DateTime("2013-01-01 01:23:45");
echo $foo->format("Y-m-d H:i:s"); // 2013-01-01 00:00:00
echo $bar->format("Y-m-d H:i:s"); //2013-01-01 01:23:45如果您主要关心的是无效日期,请使用try/catch子句:
try {
    $baz = new DateTime("foobar");
} catch (Exception $e) {
    // do something else here
    // like throwing an HTTP Exception
}发布于 2013-10-29 18:36:22
实际上,@nietonfir解决方案对我来说很好:
try { $dateNew = new \DateTime('$date'); } catch (\Exception $e) { echo return $e;  }(请注意"\“之前的一些声明,以绕过symofny异常),因为如果有人只通过YYYY-mm-dd的日期是完成00:00:00小时,但我想做的是检查什么是$date,然后再验证它!
举个例子
SOMETHING THAT CHECKIN DATE IF ITS yyyy-mm-dd `hh:mm:ss OR just yyyy-mm-dd
and THEN IF WE ARE IN THE SECOND CASE DOING SOMETHING BEFORE doing
try { $dateNew = new \DateTime('$date'); } catch (\Exception $e) { echo return $e;  }方法如下:
list($date1, $time) = explode("  ",$date);不起作用,因为如果我们在yyyy-mm-dd的情况下,空格“”无法识别,并且它会引发一个异常,如下所示:
Notice: Undefined offset: 1 in...........https://stackoverflow.com/questions/19543742
复制相似问题