我该如何使用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