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

时间:2017-11-27 21:37:39

标签: php

我有以下字符串:

08/07/2012 04:17:18

如何使用PHP检查它是否为date数据类型?例如,如果我正在检查integer,我会这样做:if(is_int($checkVar)。我怎么能对这种日期格式做同样的事情呢?

3 个答案:

答案 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。

相关问题