[英]Converting time stamp
我对此代码有疑问,正在从其他脚本重用它,它是从xml文件读取并从节点转换日期/时间。 节点中的日期如下,这是与原始脚本的唯一区别:
<od>10:15:41 01/03/13</od>
我以为我对此进行了正确的修改,但无法正常工作:
$_date=$record->getElementsByTagName("od");
$_date=((!empty($_date))?$_date->item(0)->nodeValue:"");
if(strpos($_date,".")!==false)
{
$_date=substr($_date,0,strpos($_date,"."));
}
$_date=date("H:i:s m/d/Y",strtotime($_date));
$_date.=(trim($_date)!="")?"Z":"";
xmlrpc_set_type($_date, 'datetime');
任何帮助深表感谢。
日期/时间10:15:41 01/03/13
是无效的格式 。
strftime
可以与Ymd H:i:s
格式一起使用,因为它是明确的。
另一方面,它与H:i:sm/d/y
混淆,因为它可以解释为H:i:sd/m/Y
考虑一下日期02/03/2013-m / d / y将提示它是2月3日,而d / m / Y将提示它是3月2日。
换句话说,为了确保我们每次都能得到正确的日期,我们必须更加具体。 如果给定的日期确实是'H:i:sm / d / y'格式,那么date_create_from_format('H:i:sm/d/y', $_date)
将为您提供一个与正确日期相对应的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;
}
希望有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.