2016-03-21 143 views
0

我有自定义的日期格式,看起来像:PHP的正则表达式的日期格式

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

这真的很难写正则表达式来像这样的格式,我怎么能检测日期有格式?

回答

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

正则表达式你的情况最好的解决方案。 PHP已经为来自字符串的日期/时间分析提供了很好的支持。

使用DateTime::createFromFormat()解析您的字符串。

$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 
) 
当解析成功或 FALSE当解析失败,返回一个有效 DateTime对象