PHPでは、日付と時刻の処理は一般的な要件です。多くの開発者にとって、さまざまなニーズに応じて日付形式の出力をカスタマイズする方法は、多くの場合頭痛です。幸いなことに、PHPの組み込みStrftime()関数は、日付形式でカスタム出力を簡単に処理するのに役立ちます。この記事では、STRFTIME()関数を使用して日付形式をカスタマイズし、いくつかの一般的なアプリケーションシナリオを表示する方法について詳しく説明します。
strftime()は、指定された形式に従って日付と時間を出力するために使用されるPHPの日付フォーマット関数です。日付()関数とは異なり、 STRFTIME()を使用すると、よりローカライズされた日付形式を使用できます。これは、異なる言語や地域の時間形式に自動的に適応できます。
strftime()関数の基本的な構文は次のとおりです。
<span><span><span class="hljs-title function_ invoke__">strftime</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$format</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">time</span></span><span>()) : </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
$フォーマット:これは、必要なフォーマットされた文字を含む日付形式の文字列です。
$タイムスタンプ:これはタイムスタンプであり、デフォルト値は現在の時刻です。他のタイムスタンプを通過している場合、関数は渡された時間に従ってフォーマットされます。
一般的に使用されるstrftime()フォーマット文字を次に示します。
フォーマット文字 | 説明する | 例 |
---|---|---|
%y | 4桁の年を完了します | 2025 |
%m | 月(2桁、01-12) | 06 |
%d | 日(2桁、01-31) | 14 |
%h | 時間(24時間、00-23) | 15 |
%m | 分(00-59) | 30 |
%s | 秒(00-59) | 45 |
%a | 週の略語(英語) | 月 |
%a | 今週のフルネーム(英語) | 月曜日 |
%b | 月の略語(英語) | 6月 |
%b | 月のフルネーム(英語) | 6月 |
「2025年6月14日15:30:45」という形式で日付と時刻を出力する必要があるとします。コードは次のとおりです。
<span><span><span class="hljs-meta"><?php</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-title function_ invoke__">time</span></span><span>());
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
出力結果:
<span><span><span class="hljs-number">2025</span></span><span><span class="hljs-string">年06月14日</span></span><span> </span><span><span class="hljs-number">15</span></span><span><span class="hljs-string">:30:45</span></span><span>
</span></span>
「2025年6月14日月曜日」を出力する場合は、次のコードを使用できます。
<span><span><span class="hljs-meta"><?php</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日 週%A"</span></span><span>, </span><span><span class="hljs-title function_ invoke__">time</span></span><span>());
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
出力結果:
<span><span><span class="hljs-number">2025</span></span><span><span class="hljs-string">年06月14日</span></span><span> </span><span><span class="hljs-string">週Monday</span></span><span>
</span></span>
注: %aは英語の週名を出力し、デフォルトは英語です。日付と週の出力を中国語にしたい場合は、PHPのローカリゼーション設定が正しいことを確認することをお勧めします。
特定の日付の部分のみを気にしている場合、毎月の出力しか出力しないかなど、以下を使用できます。
<span><span><span class="hljs-meta"><?php</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月"</span></span><span>, </span><span><span class="hljs-title function_ invoke__">time</span></span><span>());
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
出力結果:
<span><span><span class="hljs-number">2025</span></span><span><span class="hljs-string">年06月</span></span><span>
</span></span>
日付形式をローカリゼーション要件に準拠させるために、 setlocale()関数を使用してロケール環境を設定できます。たとえば、中国の環境では、日付形式は自動的に中国語に変換されます。
<span><span><span class="hljs-meta"><?php</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日 週%A"</span></span><span>, </span><span><span class="hljs-title function_ invoke__">time</span></span><span>());
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
出力結果(システムが中国の環境をサポートすると仮定):
<span><span><span class="hljs-number">2025</span></span><span><span class="hljs-string">年06月14日</span></span><span> </span><span><span class="hljs-string">週六</span></span><span>
</span></span>
ローカリゼーションのサポート:一部の環境では、 STRFTIME()関数の出力はローカリゼーション設定(Locale)に関連している場合があります。したがって、対応する言語パックがサーバーにインストールされていることを確認する必要があります。
互換性: Strftime()はC言語標準ライブラリに基づいているため、その動作はオペレーティングシステムまたはPHPバージョンによって異なる場合があります。非互換性の問題に遭遇した場合は、日付()関数またはその他のサードパーティライブラリを使用して、日付のフォーマットを処理することを検討してください。
パフォーマンスの考慮事項:高頻度の日付のフォーマット関数が必要な場合、最適化を実行するときにキャッシュを検討するか、不必要なローカリゼーション操作を減らすことをお勧めします。
この記事の導入を通じて、誰もがSTRFTIME()関数を使用してPHPでの日付形式の出力をカスタマイズする方法を学んだと思います。この機能は、柔軟な日付と時刻のフォーマット方法を提供するだけでなく、ローカリゼーション設定を介してさまざまなロケール環境にも適応し、日付と時刻関連のニーズをよりよく処理するのに役立ちます。 Strftime()の使用をマスターすると、開発プロセス中に便利になります。