現在の位置: ホーム> 最新記事一覧> Date_sunset()を作成する方法国際ディスプレイ時間をサポートします

Date_sunset()を作成する方法国際ディスプレイ時間をサポートします

M66 2025-06-04

PHPでは、 date_sunset()関数は、緯度と経度と日付に基づいて日没時間を計算できます。 UNIXタイムスタンプまたはフォーマットされた時間文字列を返します。ただし、この機能自体は、多言語出力や異なる国際化(I18N)時間形式を直接サポートしていません。では、 date_sunset()をマルチリンギャルとローカライズされたディスプレイをサポートする方法は?この記事では、段階的に実装します。

1。基本的な使用法のレビュー

まず、 date_sunset()の基本的な使用法を理解しましょう。

 <?php
$timestamp = strtotime('2025-04-26');
$latitude = 37.7749;  // 例えば:サンフランシスコ
$longitude = -122.4194;

$sunset = date_sunset(
    $timestamp,
    SUNFUNCS_RET_TIMESTAMP,
    $latitude,
    $longitude,
    90,
    0
);

echo date('H:i:s', $sunset);
?>

上記のコードは日没時間を出力しますが、時間形式は固定されており、手動でフォーマットする必要があります。そして、ロケールは考慮されません。

2。多言語および国際的な時間形式をサポートするための改革

多言語と国際化を実現するために、PHPのIntldateFormatterクラスを組み合わせることができます。これは、 INTL拡張によって提供される強力なツールです。

まず、サーバーにINTL拡張子がインストールされていることを確認してください。そうでない場合は、 https://www.m66.net/php-intl-install-guideでインストールを参照できます。

これが完全に改善されたコードの例です。

 <?php
$timestamp = strtotime('2025-04-26');
$latitude = 37.7749;   // 緯度
$longitude = -122.4194; // 経度

// サンセットタイムスタンプを入手してください
$sunset = date_sunset(
    $timestamp,
    SUNFUNCS_RET_TIMESTAMP,
    $latitude,
    $longitude,
    90,
    0
);

// 言語と地域を設定します,例えば法语法国
$locale = 'fr_FR'; // に変更できます 'zh_CN'、'en_US'、'de_DE' 待って

// タイムゾーンを設定します
$timezone = 'Europe/Paris'; // 必要に応じて正しいタイムゾーンを設定します

// フォーマッタを作成します
$formatter = new IntlDateFormatter(
    $locale,
    IntlDateFormatter::FULL,
    IntlDateFormatter::SHORT,
    $timezone,
    IntlDateFormatter::GREGORIAN
);

// サンセットタイムをフォーマットします
$localizedSunset = $formatter->format($sunset);

echo "日没の時間(ローカリゼーション): " . $localizedSunset;
?>

説明しましょう:

  • Localeは、中国語、フランス語、ドイツ語などの出力言語を制御します。

  • TimeZoneは出力タイムゾーンを制御して、正しい時間を確保します。

  • intldateformatterは、「2025年4月26日」を「26 Avril 2025」(フランス語形式)に変えるなど、言語習慣に従って日付を自動的にフォーマットできます。

3。動的言語の切り替えの例

WebサイトでユーザーがURLパラメーターから言語コードを渡すなどの言語を選択できる場合は、これを行うことができます。

 <?php
$locale = isset($_GET['lang']) ? $_GET['lang'] : 'en_US';

$formatter = new IntlDateFormatter(
    $locale,
    IntlDateFormatter::FULL,
    IntlDateFormatter::SHORT,
    'UTC',
    IntlDateFormatter::GREGORIAN
);

$sunset = date_sunset(
    strtotime('2025-04-26'),
    SUNFUNCS_RET_TIMESTAMP,
    37.7749,
    -122.4194,
    90,
    0
);

echo $formatter->format($sunset);
?>

https://www.m66.net/sunset.php?lang=de_deにアクセスすると、ドイツ形式の日没時間が表示されます。

4。ヒント:カスタマイズされた形式

時間と分のみを表示するなど、出力形式を完全にカスタマイズする場合は、カスタムモードをさらに指定できます。

 $formatter = new IntlDateFormatter(
    'zh_CN',
    IntlDateFormatter::NONE,
    IntlDateFormatter::NONE,
    'Asia/Shanghai',
    IntlDateFormatter::GREGORIAN,
    'HH:mm'
);

この設定は、 18:45のような時間形式を出力します。これは、モバイルや単純なインターフェイスが必要な場合に非常に適しています。

要約します

  • date_sunset()自体は、多言語および国際化をサポートしていませんが、 intldateformatterと組み合わせて使用​​できます。

  • ロケールタイムゾーンを正しく設定することを忘れないでください。

  • ユーザーが言語を動的に切り替えることができるようにすると、ユーザーエクスペリエンスが大幅に向上する可能性があります。

これを理解している限り、同様の日付時間関数( date_sunrise()など)も同じ方法で国際化することができます。