strftime
可以很好地使用Y-m-d H:i:s
格式,因为它是明确的。
另一方面,它会与 混淆H:i:s m/d/y
,因为它可以解释为H:i:s d/m/Y
。想想日期 02/03/2013 - m/d/y 表明它是 2 月 3 日,而 d/m/Y 表明它是 3 月 2 日。
换句话说,为了确保我们每次都能得到正确的日期,我们必须更加具体。date_create_from_format('H:i:s m/d/y', $_date)
如果给定的日期确实是“H:i:sm/d/y”格式,将为您提供与正确日期相对应的 DateTime 对象。
// Retrieve the date string
$_date=$record->getElementsByTagName("od");
$_date=((!empty($_date))?$_date->item(0)->nodeValue:"");
// Standardize it
$_date = get_date( $_date );
$_date .= (trim($_date) != "") ? "Z" : "";
xmlrpc_set_type($_date, 'datetime');
function get_date( $rawDate ) {
// Clean date string
if(strpos($rawDate,".")!==false) {
$rawDate=substr($rawDate,0,strpos($rawDate,"."));
}
// Attempt converting from m/d/y AND m/d/Y formats
$date = date_create_from_format('H:i:s m/d/y', $rawDate);
if( false === $date ) $date = date_create_from_format('H:i:s m/d/Y', $rawDate);
if( !empty($date) ) {
return $date->format('H:i:s m/d/Y'); // Convert the date to a string again
}
// If neither works, try using strtotime instead
$date = @strtotime($rawDate);
$date = !empty($date) ? date('H:i:s m/d/y', $date) : false;
return $date;
}
希望有帮助!