DateTime::createFromFormat如何捕获特定的日期时间


DateTime::createFromFormat How to capture a specific date-time?

我该如何使用DateTime::createFromFormat来捕获这样一个日期的开始和结束时间:

Sunday, March 29, 2015<br />10:00 AM - 12:00 PM

我需要为MySQL的DATETIME数据类型重新格式化它。这是我的尝试:

$start_time = DateTime::createFromFormat('D, M d, Y*/*h:i A+', $element->plaintext);
$end_time = DateTime::createFromFormat('D, M d, Y?????????????????h:i A+', $element->plaintext);
$start_time->format('Y-m-d H:i:s');
$end_time->format('Y-m-d H:i:s');

我得到错误"致命错误:调用布尔值上的成员函数format()…"这一定意味着$element->plaintext不是我认为的那样。

DateTime的通配符和分隔符有点奇怪。首先,*与空格字符不匹配,也不能使用*来匹配数字。

所以,你需要这样做:

$start_time = DateTime::createFromFormat('D, M d, Y* *h:i A+', $element->plaintext);
$end_time = DateTime::createFromFormat('D, M d, Y* *h:i A| - h:i A', $element->plaintext);

第二个示例中的|字符重置日期字符串,以便第二次解析。

演示:https://eval.in/306698