[英]Checking if variable is date with PHP?
我有以下字符串:
08/07/2012 04:17:18
如何使用PHP检查它是否是date
数据类型? 例如,如果我检查integer
,我会这样做: if(is_int($checkVar)
。如何对这种日期格式做同样的事情?
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] =>
)
如果找不到日期,则为假。 如果这足以满足您的需求,那么请使用它!
您并没有真正检查变量是否为date
类型。 您有一个非常特定格式的字符串,并希望确保它符合该格式。
一种方法是使用正则表达式( preg_match()
)。 得到一些合理正确的东西相当简单,但如果你也关心闰年,夏令时跳跃,或者如果你对2月30日指定的人不好,那可能会很难。
DateTime
对象可以帮助你一点点。 您可以解析日期的inidivual组件,将其添加到DateTime
构造函数,然后查看DateTime
构造函数是否提供类似于原始输入的内容。
例如,我很确定DateTime
会手动将4月31日(不存在)转换为5月1日。 所以,你可以检查您输入一个月( 4
)月相匹配DateTime
使用( 5
)。 如果所有这些都匹配,并且没有错误,则它是您格式的有效字符串。
if (strtotime($date) !== false)
如果日期有效,strtotime()将返回数字。 请注意,strtotime()和date_parse()也适用于字符串,因此如果您正在验证数据库并且不想要类似的东西
March 1st 2011
工作然后你不能使用这些功能。 对于我通常做的mysql日期
$date = date('Y-m-d',strtotime($date));
它将任何日期格式格式化为所需的格式。 如果原始$ date不是日期格式,则生成的$ date将为false。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.