まず、次の図に示すような列があります。
ユーザーは、登録時にタイムゾーンを選択します。ユーザーに応じて時間を解釈するにはどうすればよいですか? このような状況では、ユーザーがいつアクティブになるかをユーザーが定義できるようにしたいので、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 時 (アメリカ/シカゴ) と重なっていることがわかります。