In PHP kann die Funktion date_sunset () die Sonnenuntergangszeit basierend auf Breitengrad und Datum berechnen. Es gibt einen Unix -Zeitstempel oder eine formatierte Zeitzeichenfolge zurück. Diese Funktion selbst unterstützt jedoch nicht direkt mehrsprachige Ausgaben oder verschiedene internationalisierte Zeitformate (i18N). Wie erstellt ich also date_sunset () Support Mehrsprachige und lokalisierte Anzeige? In diesem Artikel werden Sie Schritt für Schritt implementieren.
Lassen Sie uns zunächst die grundlegende Verwendung von DATE_SUNSET () verstehen:
<?php
$timestamp = strtotime('2025-04-26');
$latitude = 37.7749; // Zum Beispiel:San Francisco
$longitude = -122.4194;
$sunset = date_sunset(
$timestamp,
SUNFUNCS_RET_TIMESTAMP,
$latitude,
$longitude,
90,
0
);
echo date('H:i:s', $sunset);
?>
Der obige Code gibt die Sonnenuntergangszeit aus, das Zeitformat ist jedoch festgelegt und muss manuell formatiert werden. Und das Gebietsschema wird nicht berücksichtigt.
Um mehrsprachig und Internationalisierung zu erreichen, können wir die intDDateFormatter -Klasse von PHP kombinieren, ein leistungsstarkes Tool, das durch die INTL -Erweiterung bereitgestellt wird.
Stellen Sie zunächst sicher, dass Ihr Server die INTL -Erweiterung installiert hat. Wenn nicht, können Sie sich hier auf die Installation beziehen: https://www.m66.net/php-intl-install-guide
Hier ist ein komplett verbessertes Codebeispiel:
<?php
$timestamp = strtotime('2025-04-26');
$latitude = 37.7749; // Breite
$longitude = -122.4194; // Länge
// Holen Sie sich den Sonnenuntergangszeitstempel
$sunset = date_sunset(
$timestamp,
SUNFUNCS_RET_TIMESTAMP,
$latitude,
$longitude,
90,
0
);
// Setzen Sie Sprache und Region,Zum Beispiel法语法国
$locale = 'fr_FR'; // Kann auf geändert werden auf 'zh_CN'、'en_US'、'de_DE' Warten
// Zeitzone setzen
$timezone = 'Europe/Paris'; // Stellen Sie nach Bedarf die richtige Zeitzone ein
// Erstellen Sie ein Formatierer
$formatter = new IntlDateFormatter(
$locale,
IntlDateFormatter::FULL,
IntlDateFormatter::SHORT,
$timezone,
IntlDateFormatter::GREGORIAN
);
// Format Sonnenuntergangszeit
$localizedSunset = $formatter->format($sunset);
echo "Sonnenuntergangszeit(Lokalisierung): " . $localizedSunset;
?>
Gebietsschema kontrolliert die Ausgangssprache wie Chinesisch, Französisch, Deutsch usw.
TimeZone steuert die Ausgangszeitzone, um die richtige Zeit zu gewährleisten.
IntDateFormatter kann automatisch Daten nach den Sprachgewohnheiten formatieren, z. B. "26. April 2025" in "26 Avril 2025" (französisches Format).
Wenn Ihre Website Benutzern es ermöglicht, Sprachen auszuwählen, z. B. Sprachcodes aus URL -Parametern, können Sie dies tun:
<?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);
?>
Wenn Sie besuchen: https://www.m66.net/sunset.php?lang=de_de , sehen Sie die Sonnenuntergangszeit im deutschen Format.
Wenn Sie das Ausgangsformat vollständig anpassen möchten, z. B. nur Stunden und Minuten anzeigen, können Sie den benutzerdefinierten Modus weiter angeben:
$formatter = new IntlDateFormatter(
'zh_CN',
IntlDateFormatter::NONE,
IntlDateFormatter::NONE,
'Asia/Shanghai',
IntlDateFormatter::GREGORIAN,
'HH:mm'
);
Diese Einstellung gibt ein Zeitformat wie 18:45 aus, das sehr für Mobilgeräte geeignet ist oder wenn Sie eine einfache Schnittstelle benötigen.
DATE_SUNSET () selbst unterstützt nicht mehrsprachig und Internationalisierung, kann sondern in Verbindung mit intDateFormatter verwendet werden.
Denken Sie daran, Gebietsschema und Zeitzone richtig zu setzen.
Wenn Benutzer die Sprachen dynamisch wechseln können, kann die Benutzererfahrung erheblich verbessern.
Solange Sie dies verstehen, können ähnliche Datumszeitfunktionen (z. B. DATE_SUNRISE () ) ebenfalls auf die gleiche Weise internationalisiert werden.