php Regex的日期格式

时间:2016-03-21 08:57:21

标签: php regex date

我的自定义日期格式如下:

M jS Y g:i a (Feb 23rd 2016 3:32 pm )

将regex写成这样的格式真的很难,我怎么能检测到那个日期有这种格式?

2 个答案:

答案 0 :(得分:3)

如果您不一定需要正则表达式,只需使用date_create_from_format函数即可。如果它无法解析字符串,则返回FALSE,因此您可以检查其返回值。

$dateObject = date_create_from_format("M jS Y g:i a", "Feb 23rd 2016 3:32 pm");
if ($dateObject === false) {
    // string is in a wrong format
}

答案 1 :(得分:1)

正则表达式不是您案例中的最佳解决方案。 PHP已经为从字符串解析日期/时间提供了很好的支持。

使用DateTime::createFromFormat()来解析字符串。解析成功时返回有效的DateTime对象,解析失败时返回FALSE

$date = DateTime::createFromFormat(
    'M jS Y g:i a',
    'Feb 23rd 2016 3:32 pm',
    new DateTimeZone('UTC')        // put your timezone here
);
print_r($date);

显示:

DateTime Object
(
    [date] => 2016-02-23 15:32:00.000000
    [timezone_type] => 3
    [timezone] => UTC
)