これは午前中にこれを行う方法について読んできました。一般的な考え方は次のとおりです。タイムスタンプをUTCで保存し、そこからオフセットを計算します。UTCを使用せずにタイムゾーンを表示
しかし、ほとんどの人のように、私は既存のコードベースを維持しており、私たちが日付を保存する方法を変更することはできません。少なくとも、割り当てられた時間枠ではありません。
私の質問は、このようなことができますか?
// this is my time zone
$timestamp = strtotime($timestampFromDatabase);
date_default_timezone_set('America/New York');
$tz = date_default_timezone_get();
// this is theoretically their timezone, which will eventually
// be taken from a session variable
date_default_timezone_set('Europe/Paris');
$offset = time() - $timestamp;
$timestamp -= $offset;
// now that I have the offset, display dates like this
date('r', $timestamp);
何人かの人が日付の算術演算に反対することを勧めてきましたが、私はここで間違っていますか?より良い方法がありますか?私が注意しなければならない落とし穴がありますか?私は特に、このメソッドがどのような種類のバグを生成する可能性があるのか、もしあれば誰が影響を与えるのかについて興味を持っています。
私の上司は、このバグがユーザーベースの1%にしか影響しないかどうか気にしない種類の人です。
編集:これをもっと明確にすることはできますか?私はこれについてあまりにも多くの受取人を持っていないようです。誰でも?あいまいな提案やリンクさえも非常に有用です。
また、将来の使用のための1つのオフジョブでUTCにデータベースを更新するには、このアプローチを使用することができます。 –
これは素晴らしいです。しかし、私はこのオブジェクトを持っていないPHP 5.14を実行していると仮定します。別の方法がありますか? –
Zend FrameworkはZend_DateにPHPベースのソリューションを持っていますが、フレームワークの一般的な要件としてPHP 5.2.4を求めています。それは働くかもしれない*。 PHPをアップグレードまたは再コンパイルできますか? –