2012-02-19 18 views
0

しばらく私はMySQLのNOW()関数を使用してMySQLのDBに時刻/日付を記録していましたが、ホストのタイムゾーン変数がPSTよりも3時間遅れていることが分かりました。私はDATE_SUB(NOW(), INTERVAL 3 HOUR)を使ってこれを修正しましたが、今は3時間先のタイムスタンプのトンと、正しい時刻を示すすべての将来のタイムスタンプがあります。PHPでタイムスタンプを評価するにはどうすればよいですか?

修正プログラムを作成する前に記録されたタイムスタンプを評価するPHP関数があるので、私の管理ユーティリティに表示されるときにオフセットすることができますか?例えば

:多くの入力形式については

if($timestamp < 2012-02-16 21:57:18) { 
    $timestamp - 3 hours; 
} 
+1

'($ timestamp

+0

(あなたのPHP '$タイムスタンプ'はPHPのUNIXタイムスタンプで、MySQLのdatetime文字列ではありません)' –

+5

'UPDATEテーブルSETタイムスタンプ= DATE_SUB(タイムスタンプ、インターバル3時間)WHEREタイムスタンプ<'2012-02-16 21:57:18'データベースの値を再び同期させます。アプリケーションコードでこれを処理したくないのは確かです。 – deceze

答えて

1

新しいタイムスタンプ(後ろの3時間によって相殺)

$timestamp = date('Y-m-d H:i:s',strtotime($row['timestamp_column_name'])-(3*60*60)); 

あなたの表の2番目の列を作成し、オフセット時間を保存する(多分?) - おそらく、管理時間、それを呼び出すかからのオフセット管理時間を保存しますシステムの時間か、PHPがここに記載されたオプションのようなものを使用して使用するタイムゾーンを設定することができます:PHP timezone not set

+0

私は最初の誤った質問に答えたので、この1つのクレジットを与える必要があります。 – nipponese

0

strtotimeは移動するための方法です。しかし、そのヒューリスティックな手法は驚くべき結果につながる可能性があるため、特定のフォーマットのみを解析する場合は、strptimeを使用してください。

1

魔法の機能strtotimeはすべてあなたのために働きます。人間が読める形式の日付を追加、操作、さらには読むことさえ真剣にチェックしてください。次に、date関数は、どの形式にも戻す書式設定に適しています。

関連する問題