我的自定义日期格式如下:
M jS Y g:i a (Feb 23rd 2016 3:32 pm )
将regex写成这样的格式真的很难,我怎么能检测到那个日期有这种格式?
答案 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
)