現在の位置: ホーム> 最新記事一覧> setlocale()lc_timeで日付形式を設定する方法は?ローカライズされたディスプレイをすばやく実装します

setlocale()lc_timeで日付形式を設定する方法は?ローカライズされたディスプレイをすばやく実装します

gitbox 2025-09-04

PHP開発では、 Setlocale()関数とLC_TIME定数を使用して、日付と時間のローカライズされた表示を制御することがよくあります。適切なロケールを設定することにより、プログラムは、異なる言語や地域の習慣に従って日付と時刻の形式を正しく表示できます。この記事では、 lc_timesetlocale()を使用して日付形式を設定し、ローカライズされたディスプレイ効果を迅速に実現する方法を詳細に紹介します。

1。setlocale ()関数の概要

SetLocale()関数は、現在のスクリプトのロケールを設定するために使用されます。これは、プログラム内の日付、時刻、数値形式、その他の側面の表示に影響を与える可能性があります。この関数は、2つのパラメーターを受け入れます。

  • カテゴリ:さまざまな種類のローカリゼーション情報を設定します。一般的なものは次のとおりです。

    • LC_ALL :すべてのカテゴリを設定します。

    • LC_TIME :日時に関連するローカリゼーションを設定します。

    • LC_NUMERIC :デジタル形式を設定します。

    • LC_MONETARY :通貨形式を設定します。

    • LC_COLLATE :文字列ソーティングルールを設定します。

  • ロケール:領域を表す識別子。形式は「Language_Country」または「Language_Country.Coding」です。たとえば、「Zh_cn.utf-8」は中国(中国、UTF-8エンコーディング)を表します。

SetLocale()を介して適切なエリア情報を設定した後、PHPはエリア情報を使用して、関連する日付と時刻表示を処理します。

2. LC_TIMEで日付形式を設定します

LC_TIME定数は、日時に関連するローカリゼーション設定を指定するために使用されます。それを通して、日付形式、月の名前、曜日などを制御できます。ローカライズされた日付形式を実装するには、通常、 strftime()setlocale()関数を使用する必要があります。

例:

 <span><span><span class="hljs-comment">// 中国の地域として設定します(中国)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">setlocale</span></span><span>(LC_TIME, </span><span><span class="hljs-string">'zh_CN.UTF-8'</span></span><span>);

</span><span><span class="hljs-comment">// 現在の日付と出力をローカライズされた形式で取得します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strftime</span></span><span>(</span><span><span class="hljs-string">'%A, %d %B %Y'</span></span><span>);  </span><span><span class="hljs-comment">// 出力:水曜日, 26 6月 2025</span></span><span>
</span></span>

上記の例では、 setlocale()は現在のスクリプトの領域を中国(単純化された中国人)に設定します。 STRFTIME()関数は、現在の地域設定に従って中国形式で日付を出力します。

3。一般的な日付形式

strftime()を使用すると、日付の表示方法を柔軟に指定できます。いくつかの一般的な形式は次のとおりです。

  • %A :今週の完全な名前(例:月曜日、火曜日など)

  • %A :曜日の短い名前(例:月曜日、火曜日など)

  • %B :月の名前の完了(たとえば、1月、2月など)

  • %B :短い月の名前(たとえば、最初、2番目など)

  • %D :月の日付(01〜31)

  • %y :4桁の年(例:2025)

  • %y :2桁の年(例:25)

  • %H :24時間(00〜23)

  • %M :分(00〜59)

  • %S :秒(00〜59)

例:

 <span><span><span class="hljs-comment">// 英語を話す地域として設定します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">setlocale</span></span><span>(LC_TIME, </span><span><span class="hljs-string">'en_US.UTF-8'</span></span><span>);

</span><span><span class="hljs-comment">// 現在の日付と出力をローカライズされた形式で取得します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strftime</span></span><span>(</span><span><span class="hljs-string">'%A, %d %B %Y'</span></span><span>);  </span><span><span class="hljs-comment">// 出力:Wednesday, 26 June 2025</span></span><span>
</span></span>

異なるロケール設定と日付のフォーマッタを使用すると、さまざまな言語や地域での日付表示を簡単に実現できます。

4.よくある質問と予防策

  • ロケールサポートの問題:すべてのサーバーがすべての地域識別子をサポートするわけではありません。 setLocale()を使用する場合、最初にロケール-Aコマンドを介してサーバーのサポートされている領域を確認するのが最善です。指定された領域識別子が存在しない場合、 setlocale()はfalseを返します。したがって、領域識別子は注意して選択する必要があります。

  • タイムゾーン設定の問題setLocale()は、領域のローカリゼーション形式のみを制御し、 date_default_timezone_set()関数はタイムゾーンを設定する必要があります。特定のタイムゾーンに従って時間を表示する必要がある場合は、 date_default_timezone_set()で使用できます。

 <span><span><span class="hljs-comment">// タイムゾーンを設定します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);

</span><span><span class="hljs-comment">// 中国の地域として設定します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">setlocale</span></span><span>(LC_TIME, </span><span><span class="hljs-string">'zh_CN.UTF-8'</span></span><span>);

</span><span><span class="hljs-comment">// 出力当前时间</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strftime</span></span><span>(</span><span><span class="hljs-string">'%Y-%m-%d %H:%M:%S'</span></span><span>);  </span><span><span class="hljs-comment">// 出力:2025-06-26 10:30:45</span></span><span>
</span></span>
  • コーディングの問題:中国語などの非ラチン文字をサポートする必要がある場合は、UTF-8エンコーディングを使用することをお勧めします。ロケールを設定するときに文字化けしたコードの問題に遭遇した場合、対応する言語パッケージをサーバーにインストールし、エンコードが一貫していることを確認できます。

5。結論

LC_TIME定数を使用してSETLOCALE()を使用すると、PHPは日付と時間のローカライズされた表示を実現できます。異なる領域識別子を選択することにより、開発者はユーザーの地理的位置に従って日付形式を自動的に調整して、よりフレンドリーなユーザーエクスペリエンスを提供できます。サーバーが対応する領域識別子をサポートしているかどうかを確認して、エンコーディングの一貫性を確保して、文字化けコードなどの表示を避けてください。

この記事の例と指示を使用して、ローカライズされた日付形式の設定をすばやく実装し、アプリケーションに多言語サポートを追加できるはずです。