我一直在使用以下代码而没有任何问题,直到它最终落在Windows服务器上并决定产生错误:
$date = date('F d, Y', $data->e_date)
date($time_format, strtotime($date.' '.$data->e_time))
*(e_date存储方式如下:“1293559200”,e_time存储方式如下:“18:00”)*
错误是这样的:
date() [function.date]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in ...
据我所知,这是因为我在日期函数中使用 strtotime。所以我想知道解决或重写这个问题的优雅方法是什么?
我是否应该在一个新变量中输入整个strtotime,即$ newdate,然后以该形式或其他方式更新?
谢谢!
答案 0 :(得分:0)
您使用的是UNIX TIMESTAMP,它无法在Windows操作系统中正常运行。
尝试使用此功能转换它。 将20031230233029转换为30/12/2003 23:30:59
function mysql_timestamp_para_humano($dt) {
$yr=strval(substr($dt,0,4));
$mo=strval(substr($dt,4,2));
$da=strval(substr($dt,6,2));
$hr=strval(substr($dt,8,2));
$mi=strval(substr($dt,10,2));
$se=strval(substr($dt,12,2));
return date("d/m/Y H:i:s", mktime ($hr,$mi,$se,$mo,$da,$yr));
}
或者这个
function timestamp_para_humano($ts) {
$d=getdate($ts);
$yr=$d["year"];
$mo=$d["mon"];
$da=$d["mday"];
$hr=$d["hours"];
$mi=$d["minutes"];
$se=$d["seconds"];
return date("d/m/Y", mktime($hr,$mi,$se,$mo,$da,$yr));
}
或者您可以尝试将unix时间戳转换为另一个函数的mysql时间戳
function timestamp_para_mysql_timestamp($ts) {
$d=getdate($ts);
$yr=$d["year"];
$mo=$d["mon"];
$da=$d["mday"];
$hr=$d["hours"];
$mi=$d["minutes"];
$se=$d["seconds"];
return sprintf("%04d%02d%02d%02d%02d%02d",$yr,$mo,$da,$hr,$mi,$se);
}