繁体   English   中英

使用PHP检查变量是否为日期?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM