0

可変の UNIX タイムスタンプと秒単位の固定タイムゾーン オフセットが与えられた場合、現地時間が午前 8 時を過ぎているかどうかをどのように判断できますか。

たとえば、次の変数を使用します。

$timestamp = time();
$timezone_offset = -21600;  //i think that's -8hrs for pacific time
4

2 に答える 2

1
if(date("H", $timestamp + $timezone_offset) >= 8){
    // do something
}

8:00:00 を 1 ミリ秒過ぎても「午前 8 時過ぎ」と考えると仮定します。

于 2012-12-07T01:15:54.067 に答える
0

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 時間からフォーマットされた日付に変換するときが来るまで、タイム ゾーンについて心配する必要はありません。

于 2012-12-07T02:11:34.823 に答える