我有以下字符串:
08/07/2012 04:17:18
如何使用PHP检查它是否为date
数据类型?例如,如果我正在检查integer
,我会这样做:if(is_int($checkVar)
。我怎么能对这种日期格式做同样的事情呢?
答案 0 :(得分:2)
date_parse($theString)
将返回以下格式的数组
Array
(
[year] => 2006
[month] => 12
[day] => 12
[hour] => 10
[minute] => 0
[second] => 0
[fraction] => 0.5
[warning_count] => 0
[warnings] => Array()
[error_count] => 0
[errors] => Array()
[is_localtime] =>
)
或如果找不到日期则为false。如果这足以满足您的需求,那么请使用它!
答案 1 :(得分:1)
您并未真正检查变量是否为date
类型。您有一个非常特定格式的字符串,并希望确保它符合该格式。
一种方法是使用正则表达式(preg_match()
)。得到一些合理正确的东西相当简单,但如果你也关心闰年,夏令时跳跃,或者如果你对2月30日指定的某人不合适,可能会很难
DateTime
对象可以帮助你一点点。您可以解析日期的inidivual组件,将其添加到DateTime
构造函数,然后查看DateTime
构造函数是否提供了与原始输入类似的内容。
例如,我非常确定DateTime
将手动转换到4月31日(不存在)到5月1日。因此,您可以检查输入月份(4
)是否与DateTime
使用的月份(5
)匹配。如果所有这些都匹配,并且没有错误,则它是您格式的有效字符串。
答案 2 :(得分:0)
if (strtotime($date) !== false)
如果日期有效,strtotime()将返回数字。请注意,strtotime()和date_parse()也适用于字符串,因此如果您要验证数据库并且不想要
之类的内容March 1st 2011
要工作,那么你就无法使用这些功能。对于我通常做的mysql日期
$date = date('Y-m-d',strtotime($date));
将任何日期格式格式化为所需格式。如果原始$ date不是日期格式,则生成的$ date将为false。