我正在使用 PHP 中的值数组。其中一些值可能包括各种字符串格式的日期。
我需要将多种格式的日期转换为它们的等效数字(Unix 时间戳)。问题是能够确定字符串是否是日期。
Using
if (($timestamp = strtotime($str)) === false)
将检查字符串中的有效日期,但如何确定该值是否应该被验证为日期?
Example:
$x = {1,2,3,"4","11/12/2009","22/12/2000",true,false};
foreach($x as $value)
{
if(is_bool($value))
if(is_string($value))
if(is_numeric($value))
if(is_date($value)) ?
...
}
简而言之,有没有一种简单的方法来检查字符串值是否是日期?
简而言之,有没有一种简单的方法来检查字符串值是否是日期?
事实并非如此,因为它可以是任意格式。
如果可能的话,我倾向于将解析留给神奇的strtotime()
。如果它能够创建一个有效的日期,那就太好了。如果没有,您将收到false
.
不过,请做好误报可能性的准备,因为strtotime()
甚至可以解析“上周五”之类的内容。
If strtotime()
对你来说太自由了,你可以考虑构建一个你想要接受的日期格式的集合,并运行 PHP 5.3DateTime:createFromFormat http://php.net/manual/en/datetime.createfromformat.php在每个日期使用每一种格式。
类似的东西(未经测试)
$formats = array("d.m.Y", "d/m/Y", "Ymd"); // and so on.....
$dates = array(1,2,3,"4","11/12/2009","22/12/2000",true,false);
foreach ($dates as $input)
{
foreach ($formats as $format)
{
echo "Applying format $format on date $input...<br>";
$date = DateTime::createFromFormat($format, $input);
if ($date == false)
echo "Failed<br>";
else
echo "Success<br>";
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)