【发布时间】:2016-03-21 08:57:21
【问题描述】:
我有如下自定义日期格式:
M jS Y g:i a (Feb 23rd 2016 3:32 pm )
像这样将正则表达式写成那种格式真的很难,我怎么能检测到那个日期有那种格式?
【问题讨论】:
我有如下自定义日期格式:
M jS Y g:i a (Feb 23rd 2016 3:32 pm )
像这样将正则表达式写成那种格式真的很难,我怎么能检测到那个日期有那种格式?
【问题讨论】:
如果您不需要正则表达式,只需使用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
}
【讨论】:
正则表达式不是在您的情况下的最佳解决方案。 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
)
【讨论】: