현재 위치: > 최신 기사 목록> NL_LANGINFO () AM/PM 타임 스탬프를 얻는 사용의 예

NL_LANGINFO () AM/PM 타임 스탬프를 얻는 사용의 예

gitbox 2025-05-27

PHP에서 NL_LANGINFO () 함수는 날짜, 시간 형식 등과 같은 현재 환경의 현지화 된 정보를 얻는 데 사용됩니다.이 기능은 시스템의 로케일에 따라 달라지며 주 이름, 월 이름, 날짜 형식 등과 같은 다양한 현지 문자열을 반환 할 수 있습니다.

그러나, AM/PM ID (즉, AM/PM의 현지화 된 문자열)를 얻기 위해 NL_LANGINFO ()는 직접 상수를 제공하지 않습니다. 많은 개발자들이 NL_LANGINFO ()를 사용하여 AM/PM의 현지 식별자를 얻는 방법을 어떻게 궁금해할까요?

NL_LANGINFO ()가 직접 AM/PM 옵션이없는 이유는 무엇입니까?

NL_LANGINFO () 의 매개 변수 상수는 기본 시스템의 C 라이브러리에서 정의됩니다. 표준 NL_LANGINFO 상수는 AM/PM 식별자의 직접 열거를 포함하지 않습니다. 다음과 같은 일반적인 상수

  • abday_1 to abday_7 : 약식이 금주의 이름

  • day_1 ~ day_7 : 금주의 전체 이름

  • ABMON_1 에서 ABMON_12 : 약식 월 이름

  • MON_1 ~ MON_12 : 한 달 이름

  • AM_STRPM_STR : 일부 시스템은이 두 가지 상수를 지원하지만 모든 시스템이이를 지원하는 것은 아닙니다.

따라서 시스템의 C 라이브러리 및 로케일이 지원하는 경우 AM_STRPM_STR 상수를 사용하여 AM 및 PM 식별자를 얻을 수 있습니다. 그렇지 않으면 NL_LANGINFO () 로 얻을 수 없습니다.

php의 am_str 및 pm_str

PHP의 NL_LANGINFO ()는 기본 시스템의 현지화 라이브러리가이를 지원하므로 들어오는 AM_STRPM_STR 상수를 지원합니다. 정의 된 ()를 사용하여 판단 할 수 있습니다.

 if (defined('AM_STR') && defined('PM_STR')) {
    echo "AM 심벌 마크: " . nl_langinfo(AM_STR) . PHP_EOL;
    echo "PM 심벌 마크: " . nl_langinfo(PM_STR) . PHP_EOL;
} else {
    echo "현재 시스템은이를 지원하지 않습니다 AM_STR 또는 PM_STR 끊임없는。";
}

시스템이 지원하면 현지화 된 아침 및 오후 로고가 출력됩니다. 예를 들어, 영어 시스템은 "AM"및 "PM"을 표시하고 중국 시스템은 "AM"및 "오후"를 표시 할 수 있습니다.

코드 예제

다음 예제는 영역을 설정하고 AM/PM ID를 구입하고 출력하는 방법을 보여줍니다.

 <?php
// 지역 설정(필요에 따라 적절하게 수정하십시오locale)
setlocale(LC_TIME, 'zh_CN.UTF-8');

// 그것이 그것을 지원하는지 여부를 결정하십시오 AM_STR 그리고 PM_STR
if (defined('AM_STR') && defined('PM_STR')) {
    $am = nl_langinfo(AM_STR);
    $pm = nl_langinfo(PM_STR);

    echo "AM 심벌 마크: " . $am . PHP_EOL;
    echo "PM 심벌 마크: " . $pm . PHP_EOL;
} else {
    echo "현재 시스템은이를 지원하지 않습니다 AM_STR 또는 PM_STR 끊임없는,얻을 수 없습니다 AM/PM 심벌 마크。" . PHP_EOL;
}

EN_US.UTF-8ZH_CN.UTF-8 과 같은 서버 환경에 따라 SetLocale 의 매개 변수를 수정하여 해당 로케일에서 AM/PM 식별자를 얻을 수 있습니다.

주목해야 할 것

  • setLocale ()은 전체 스크립트의 현지화 환경에 영향을 미치고 환경이 해당 로케일을 올바르게 설치했는지 확인합니다.

  • 모든 시스템이 특히 Windows 플랫폼에서 AM_STRPM_STR를 지원하는 것은 아닙니다.

  • 시스템이이를 지원하지 않으면 AM/PM ID를 수동 정의로 바꾸는 것을 고려할 수 있습니다.


보다 자세한 로케일 설정 및 시간 형식 처리가 필요한 경우 intldateformatter 또는 타사 라이브러리를 결합하여보다 유연한 현지화 된 시간 형식 지원을 얻을 수도 있습니다.