現在の位置: ホーム> 最新記事一覧> 正しい夕日を取得するために異なるタイムゾーンを設定する方法

正しい夕日を取得するために異なるタイムゾーンを設定する方法

M66 2025-05-17

サンセット時間関連機能を使用するPHPアプリケーションを開発する場合、タイムゾーン設定は重要な要素です。日没時間は異なるタイムゾーンで異なるため、正確な夕日時間を取得する場合、タイムゾーンが正しく設定されていることを確認する必要があります。この記事では、PHPに異なるタイムゾーンを設定し、正確な日没時間を取得する方法を示します。これは、外部APIと組み合わせてPHPコードを使用して達成します。

1.タイムゾーンを設定します

PHPのdate_default_timezone_set()関数を使用すると、デフォルトのタイムゾーンを設定できます。デフォルトでは、PHPはシステムのタイムゾーン設定を使用しますが、この関数でオーバーライドできます。たとえば、次のコードはニューヨークの時間にタイムゾーンを設定します。

 <?php
date_default_timezone_set('America/New_York');
echo '現在の時刻はです:' . date('Y-m-d H:i:s');
?>

一般的なタイムゾーン識別子は次のとおりです。

  • アジア/上海(上海時間)

  • ヨーロッパ/ロンドン(ロンドンタイム)

  • アメリカ/new_york (ニューヨークタイム)

PHPタイムゾーンリストに完全なタイムゾーンリストを見つけることができます。

2。正確な夕日を取得します

正確な日没時間を取得するには、通常、サードパーティAPIサービスを呼び出す必要があります。一般的に使用されるAPIは、サンセットとサンライズタイムアピです。このAPIを介して、緯度と経度とタイムゾーンの情報を渡して、特定の場所の日没時間を取得できます。

このAPIを使用して、特定の場所で日没時間を取得する例を示します。

 <?php
// タイムゾーンを設定します
date_default_timezone_set('Asia/Shanghai');

// 緯度と経度を設定します
$latitude = 31.2304;  // 上海の緯度
$longitude = 121.4737; // 上海の経度

// 使用API日没の時間を取得します
$api_url = "https://api.sunset-sunrise.org/json?lat={$latitude}&lng={$longitude}&formatted=0";
$response = file_get_contents($api_url);
$data = json_decode($response, true);

// 夕日を分析します
$sunset_time = $data['results']['sunset'];
echo '上海の夕日はそうです:' . $sunset_time;
?>

このコードでは、 file_get_contents()関数を使用してAPI要求を送信し、 json_decode()を介して返されたjsonデータを解析します。 $ data ['results'] ['Sunset']には、SunsetのUTC時間が含まれています。セットタイムゾーンに従って今回は、現地時間を満たすことを確認できます。

3。UTC時間を現地時間に変換します

得られた日没時間は通常、UTC時間であり、ターゲットタイムゾーンの現地時間に変換する必要があります。これは、DateTimeクラスとDateTimeZoneクラスを使用して実現できます。

UTC時間をローカルタイムゾーンに変換する方法のサンプルコードは次のとおりです。

 <?php
// 日没の時間を取得します(UTC)
$utc_sunset_time = $data['results']['sunset']; // から想定しますAPIで取得UTC時間

// 作成するDateTimeオブジェクトと設定としてUTCタイムゾーン
$datetime = new DateTime($utc_sunset_time, new DateTimeZone('UTC'));

// 转换为上海タイムゾーン
$datetime->setTimezone(new DateTimeZone('Asia/Shanghai'));

// 输出转换后的本地時間
echo '上海の夕日はそうです:' . $datetime->format('Y-m-d H:i:s');
?>

この例では、最初にDateTimeオブジェクトを作成し、 DateTimeZoneクラスを介してUTCタイムゾーンに設定します。次に、 SettimeZone()メソッドを使用して、時間を上海タイムゾーン(アジア/上海)に変換します。最後に、 format()メソッドを使用して、現地時間を出力します。

4.完全なコードの例

以前のすべてのセクションを組み合わせることで、タイムゾーンを設定し、正確な日没時間を取得する方法を示す完全なPHPコードの例を次に示します。

 <?php
// タイムゾーンを設定します为上海
date_default_timezone_set('Asia/Shanghai');

// 緯度と経度を設定します
$latitude = 31.2304;
$longitude = 121.4737;

// 使用API日没の時間を取得します
$api_url = "https://api.sunset-sunrise.org/json?lat={$latitude}&lng={$longitude}&formatted=0";
$response = file_get_contents($api_url);
$data = json_decode($response, true);

// 得るUTC時間
$utc_sunset_time = $data['results']['sunset'];

// 作成するDateTimeオブジェクトと設定としてUTCタイムゾーン
$datetime = new DateTime($utc_sunset_time, new DateTimeZone('UTC'));

// 转换为上海タイムゾーン
$datetime->setTimezone(new DateTimeZone('Asia/Shanghai'));

// 输出日落時間
echo '上海の夕日はそうです:' . $datetime->format('Y-m-d H:i:s');
?>

要約します

タイムゾーンを設定し、APIを使用して日没時間を取得することにより、さまざまな領域で夕日を正確に取得できます。タイムゾーンが正しく設定されていることを確認して、ローカルの正確な日没時間が利用できるようにすることが重要です。同時に、 DateTimeクラスとDateTimeZoneクラスを活用すると、UTC時間をターゲットタイムゾーンの現地時間に変換するのに役立ちます。