In PHP wird die Funktion nl_langinfo () verwendet, um lokalisierte Informationen über die aktuelle Umgebung zu erhalten, z. B. Datum, Uhrzeitformat usw. Diese Funktion hängt vom Gebietsschema des Systems ab und kann verschiedene lokalisierte Zeichenfolgen wie Woche, Monatsname, Datumsformat usw. zurückgeben, usw.
Um die Identität von AM/PM (d. H. Die lokalisierte Zeichenfolge für AM/PM) zu erhalten, liefert NL_langinfo () keine direkte Konstante. Viele Entwickler werden sich fragen, wie wir nl_langinfo () verwenden können, um die lokalisierte Kennung von AM/PM zu erhalten?
Die Parameterkonstanten von nl_langinfo () sind aus der C -Bibliothek des zugrunde liegenden Systems definiert. Die Standard -NL_langinfo -Konstante enthält nicht die direkte Aufzählung der AM/PM -Kennung. Gemeinsame Konstanten wie:
Abday_1 bis abday_7 : Der abgekürzte Name der Woche
Day_1 to Day_7 : Der vollständige Name der Woche
Abmon_1 zu Abmon_12 : Der abgekürzte Monat Name
MON_1 bis Mon_12 : Der vollständige Monat Name
AM_STR und PM_STR : Einige Systeme unterstützen diese beiden Konstanten, aber nicht alle Systeme unterstützen sie.
Daher können die C -Bibliothek und das Gebietsschema des Systems die Konstanten AM_STR und PM_STR verwendet werden, um die AM- und PM -Kennungen zu erhalten. Andernfalls können sie nicht mit nl_langinfo () erhalten werden.
PHPs nl_langinfo () unterstützt die eingehenden AM_STR- und PM_STR -Konstanten, als die Lokalisierungsbibliothek des zugrunde liegenden Systems sie unterstützt. Sie können defined () verwenden, um zu beurteilen:
if (defined('AM_STR') && defined('PM_STR')) {
echo "AM Logo: " . nl_langinfo(AM_STR) . PHP_EOL;
echo "PM Logo: " . nl_langinfo(PM_STR) . PHP_EOL;
} else {
echo "Das aktuelle System unterstützt es nicht AM_STR oder PM_STR Konstante。";
}
Wenn das System es unterstützt, werden lokalisierte Morgen- und Nachmittagslogos ausgegeben. Zum Beispiel wird das englische System "Am" und "PM" angezeigt, und das chinesische System kann "Am" und "Nachmittag" anzeigen.
Das folgende Beispiel zeigt, wie Sie eine Region einrichten, eine AM/PM -ID erhalten und ausgeben:
<?php
// Einrichten des Bereichs(Nach Bedarf an angemessen ändernlocale)
setlocale(LC_TIME, 'zh_CN.UTF-8');
// Stellen Sie fest, ob es es unterstützt AM_STR Und PM_STR
if (defined('AM_STR') && defined('PM_STR')) {
$am = nl_langinfo(AM_STR);
$pm = nl_langinfo(PM_STR);
echo "AM Logo: " . $am . PHP_EOL;
echo "PM Logo: " . $pm . PHP_EOL;
} else {
echo "Das aktuelle System unterstützt es nicht AM_STR oder PM_STR Konstante,Nicht in der Lage zu bekommen AM/PM Logo。" . PHP_EOL;
}
Sie können versuchen, die Parameter von SetLocale entsprechend Ihrer Serverumgebung wie en_us.utf-8 und zh_cn.utf-8 zu ändern, um die AM/PM-Kennung im entsprechenden Gebietsschema zu erhalten.
SetLocale () wirkt sich auf die Lokalisierungsumgebung des gesamten Skripts aus und stellt sicher, dass die Umgebung das entsprechende Gebietsschema korrekt installiert hat.
Nicht alle Systeme unterstützen AM_STR und PM_STR , insbesondere auf Windows -Plattformen.
Wenn das System es nicht unterstützt, können Sie in Betracht ziehen, die Identität der AM/PM durch eine manuelle Definition zu ersetzen.
Wenn Sie detailliertere Gebietsschaleneinstellungen und Zeitformatverarbeitung benötigen, können Sie auch Bibliotheken für IntDateFormatter oder Drittanbieter kombinieren, um eine flexiblere lokalisierte Zeitformatunterstützung zu erhalten.