1

まず、次の図に示すような列があります。
http://i.imgur.com/yYpxl3S.png

ユーザーは、登録時にタイムゾーンを選択します。ユーザーに応じて時間を解釈するにはどうすればよいですか? このような状況では、ユーザーがいつアクティブになるかをユーザーが定義できるようにしたいので、IE Bob は、午前 9 時から午後 12 時までアクティブなユーザーを検索したいと考えています。ユーザーがこの方法で検索できるようにするには、データベースにどのタイムスタンプを挿入する必要がありますか?

アップデート

また、ある時間が別の時間と重複しているかどうかを正確に確認する方法についても質問していましたが、これにはクロスタイムのフォーマットが不可欠です。時間が重複しているかどうかを見つけた方法のこのコード スニペットを含めます。Pekka さんも適​​切な回答をありがとうございます。

    <?php 
    date_default_timezone_set('UTC'); 
    $min = strtotime('9am');
    $max = strtotime('12pm');
    echo $min. ',' .$max . '<br/>';
    date_default_timezone_set('America/Chicago');
    $mina = strtotime('11pm');
    $maxa = strtotime('5am');
    echo 'User plays between' . date("g:ia", $min) . ' and ' . date("g:ia", $max) . '<br />';
    echo 'You play between' . date("g:ia", $mina) . ' and ' . date("g:ia", $maxa) . '<br />';
    if((($mina >= $min) And ($mina <= $max)) Or (($maxa <= $max) And ($maxa >= $min)) 
        Or (($min >= $mina) And ($min <= $maxa)) Or (($max <= $maxa) And ($max >= $mina))
    ) {
        $blend = 'True';
    } else {
        $blend = 'False';
    }
    if($maxa === $min Or $mina === $max) $blend = 'False';

    echo $blend;

    ?>

この例では、午前 9 時から午後 12 時 (UTC) が午後 11 時から午前 5 時 (アメリカ/シカゴ) と重なっていることがわかります。

4

1 に答える 1

1

夏時間とタイム ゾーンのベスト プラクティスを参照してください。

結論: UTC タイムスタンプを内部に保存し、すべてのユーザー入力を好みのタイム ゾーンとの間で変換します。それだけです。

于 2013-09-30T20:29:04.693 に答える