找出字符串是否包含日期

时间:2016-10-21 07:24:26

标签: php

我有一个字符串" scbdemo2016-10-21:getlastweekReadBooks4795"。 如何查找上面的字符串中包含日期并验证日期是当前日期。

2 个答案:

答案 0 :(得分:1)

使用正则表达式轻松完成:

$isToday = stringDateToday("scbdemo2016-10-21:getlastweekReadBooks4795");

function stringDateToday($string) {
    $reg = "/\d{4}-\d{2}-\d{2}/";

    $date = new DateTime();

    preg_match($reg, $string, $matches);

    if (isset($matches[0])) {
        return $matches[0] == $date->format("Y-m-d");
    }

    return false;
}
如果字符串中的日期是今天,

stringDateToday()将返回true。日期可以是字符串中的任何位置。

修改

根据评论中的建议,您可能希望将new DateTime()更改为new DateTime('now', new DateTimeZone('Europe/London'))以指定时区。

答案 1 :(得分:0)

这是您的代码,但它仅适用于具有:字符的字符串,无论如何

function checkdata($date, $format)
{
    $format=strstr(preg_replace("/[a-zA-Z]+/", '',$format),":",true);
   // date_default_timezone_set('UTC');
    $d = DateTime::createFromFormat($format, $date);
    if($d && $d->format($format) === $date) {

        return true;
    } else {
        return false;
    }
}

$data="scbdemo2016-10-21:getlastweekReadBooks4795";

if(checkdata($data,'Y-m-d'))
echo "Yes";
else
echo "NO";