可変の UNIX タイムスタンプと秒単位の固定タイムゾーン オフセットが与えられた場合、現地時間が午前 8 時を過ぎているかどうかをどのように判断できますか。
たとえば、次の変数を使用します。
$timestamp = time();
$timezone_offset = -21600; //i think that's -8hrs for pacific time
if(date("H", $timestamp + $timezone_offset) >= 8){
// do something
}
8:00:00 を 1 ミリ秒過ぎても「午前 8 時過ぎ」と考えると仮定します。
date_default_timezone_set()を使用して PHP でタイムゾーンを設定し、日付やDateTimeオブジェクトなどの PHP の日時関数を使用して、設定されたタイムゾーンに従って時間を確認します。PHP が適切な処理を行い、指定されたタイムゾーンに合わせて時刻を調整します。
$timestamp = 1354794201;
date_default_timezone_set("UTC"); // set time zone to UTC
if (date("H", $timestamp) >= 8) { // check to see if it's past 8am in UTC
echo "This time stamp is past 8 AM in " . date_default_timezone_get() . "\n";
}
date_default_timezone_set("America/New_York"); // change time zone
if (date("H", $timestamp) >= 8) { // Check to see if it's past 8am in EST
echo "This time stamp is past 8 AM in " . date_default_timezone_get() . "\n";
}
このコードからの出力
/* This time stamp is past 8 AM in UTC */
DateTime でも同じことができます...
$timestamp = 1354794201;
$date = new DateTime("@{$timestamp}"); // create the DateTime object using a Unix timestamp
$date->setTimeZone(new DateTimeZone("UTC")); // set time zone to UTC
if ($date->format("H") >= 8) { // check to see if it's past 8am in UTC
echo "This time stamp is past 8 AM in {$date->getTimezone()->getName()}\n";
}
$date->setTimeZone(new DateTimeZone("America/New_York")); // change time zone
if ($date->format("H") >= 8) { // Check to see if it's past 8am in EST
echo "This time stamp is past 8 AM in {$date->getTimezone()->getName()}\n";
}
上記のコードからの出力も...
/* This time stamp is past 8 AM in UTC */
Unix 時間はタイムゾーンに依存しません。これが、トランスポート層として Unix 時間を使用するポイントです。タイム スタンプを Unix 時間からフォーマットされた日付に変換するときが来るまで、タイム ゾーンについて心配する必要はありません。