0

最終的に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 に入力してから、その形式で日付に戻す必要がありますか?

ありがとうございました!

4

1 に答える 1

0

UNIX TIMESTAMP を使用していますが、Windows OS システムでは正しく機能しません。

この関数を使用して変換してみてください。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);
}
于 2011-01-13T14:11:44.540 に答える