Position actuelle: Accueil> Derniers articles> nl_langinfo () Exemple d'utilisation de l'obtention des horodatages AM / PM

nl_langinfo () Exemple d'utilisation de l'obtention des horodatages AM / PM

gitbox 2025-05-27

Dans PHP, la fonction NL_LANGINFO () est utilisée pour obtenir des informations localisées de l'environnement actuel, telles que la date, le format d'heure, etc. Cette fonction dépend de la paramètres régionaux du système et peut retourner diverses chaînes localisées telles que le nom de la semaine, le nom du mois, le format de date, etc.

Cependant, pour obtenir l'identité AM / PM (c'est-à-dire la chaîne localisée pour AM / PM), NL_LANGINFO () ne fournit pas de constante directe. De nombreux développeurs se demanderont, comment pouvons-nous utiliser nl_langinfo () pour obtenir l'identifiant localisé de l'AM / PM?

Pourquoi nl_langinfo () n'a-t-il pas d'options AM / PM directes?

Les constantes de paramètres de nl_langinfo () sont définies à partir de la bibliothèque C du système sous-jacent. La constante nl_langinfo standard ne contient pas l'énumération directe de l'identifiant AM / PM. Constantes communes telles que:

  • Abday_1 à abday_7 : le nom abrégé de la semaine

  • Day_1 to day_7 : le nom complet de la semaine

  • Abmon_1 à abmon_12 : le nom du mois abrégé

  • Mon_1 à mon_12 : le nom du mois complet

  • AM_STR et PM_STR : Certains systèmes prennent en charge ces deux constantes, mais tous les systèmes ne les soutiennent pas.

Par conséquent, si la bibliothèque C du système et le support régional, les constantes AM_STR et PM_STR peuvent être utilisées pour obtenir les identificateurs AM et PM; Sinon, ils ne peuvent pas être obtenus avec nl_langinfo () .

AM_STR et PM_STR en php

NL_LANGINFO () de PHP prend en charge les constantes AM_STR et PM_STR entrantes car la bibliothèque de localisation du système sous-jacente les prend en charge. Vous pouvez utiliser défini () pour juger:

 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 "Le système actuel ne le prend pas en charge AM_STR ou PM_STR constante。";
}

Si le système le prend en charge, les logos localisés du matin et de l'après-midi seront sortis. Par exemple, le système anglais affichera "AM" et "PM", et le système chinois peut afficher "AM" et "l'après-midi".

Exemple de code

L'exemple suivant montre comment configurer une région, obtenir et sortir un ID AM / PM:

 <?php
// Configuration de la zone(Modifier pour s&#39;approprier au besoinlocale)
setlocale(LC_TIME, 'zh_CN.UTF-8');

// Déterminez s&#39;il le soutient AM_STR et 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 "Le système actuel ne le prend pas en charge AM_STR ou PM_STR constante,Incapable d&#39;obtenir AM/PM Logo。" . PHP_EOL;
}

Vous pouvez essayer de modifier les paramètres de SetLocale en fonction de l'environnement de votre serveur, tels que en_us.utf-8 et zh_cn.utf-8 pour obtenir l'identifiant AM / PM dans les paramètres locaux correspondants.

Choses à noter

  • SetLocale () affectera l'environnement de localisation de l'ensemble du script et s'assurera que l'environnement a correctement installé les paramètres régionaux correspondants.

  • Tous les systèmes ne prennent pas en charge AM_STR et PM_STR , en particulier sur les plates-formes Windows.

  • Si le système ne le prend pas en charge, vous pouvez envisager de remplacer l'identité AM / PM par une définition manuelle.


Si vous avez besoin de paramètres régionaux plus détaillés et de traitement du format temporel, vous pouvez également combiner des bibliothèques IntlDateFormatter ou tierces pour obtenir une prise en charge de format de temps localisé plus flexible.