PHPでは、処理時間と日付は、特にロギング、データ表示、ファイルネーミングなどのシナリオでは、開発において一般的な要件です。多くの場合、無視できないタスクです。 PHPは、開発者が時間をフォーマットするのを支援する多くの機能を提供します。 localtime()とstrftime()関数の組み合わせは、多様な時間のフォーマットニーズを簡単に実現できます。
localtime()は、現地時間を取得するために使用される関数です。年、月、日、時間、分、秒、秒などを含む現地時間のさまざまなコンポーネントを含む配列を返します。この関数によって返される時間情報は、現在のタイムスタンプに基づいており、指定されたタイムスタンプに対応する現地時間情報は、パラメーターを指定することで取得できます。
<span><span><span class="hljs-variable">$time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">localtime</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$time</span></span><span>);
</span></span>
返された配列構造は次のとおりです。
<span><span>Array
(
[</span><span><span class="hljs-meta">0</span></span><span>] => 2番
[</span><span><span class="hljs-meta">1</span></span><span>] => 分
[</span><span><span class="hljs-meta">2</span></span><span>] => 時間
[</span><span><span class="hljs-meta">3</span></span><span>] => 曜日は何ですか (</span><span><span class="hljs-number">0</span></span><span>=日曜日, </span><span><span class="hljs-number">1</span></span><span>=月曜日...)
[</span><span><span class="hljs-meta">4</span></span><span>] => 月 (</span><span><span class="hljs-number">0</span></span><span>=</span><span><span class="hljs-number">1</span></span><span>月, </span><span><span class="hljs-number">11</span></span><span>=</span><span><span class="hljs-number">12</span></span><span>月)
[</span><span><span class="hljs-meta">5</span></span><span>] => 年 (から</span><span><span class="hljs-number">1900</span></span><span>始まる年)
[</span><span><span class="hljs-meta">6</span></span><span>] => 今年の何日 (</span><span><span class="hljs-number">1</span></span><span>到着</span><span><span class="hljs-number">366</span></span><span>)
[</span><span><span class="hljs-meta">7</span></span><span>] => 夏時間の兆候 (</span><span><span class="hljs-number">0</span></span><span>=いいえ, </span><span><span class="hljs-number">1</span></span><span>=はい)
)
</span></span>
この配列へのアクセスを通じて、時間、数分、月などのさまざまな部品の時間情報を正確に取得できます。
strftime()関数は、指定された形式の文字列に従って時間をフォーマットするために使用されます。 2つのパラメーターを受け入れます。1つ目はフォーマット文字列、2つ目はオプションのタイムスタンプパラメーターであり、提供されていない場合は現在の時刻にデフォルトになります。
<span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%Y-%m-%d %H:%M:%S"</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-variable">$format</span></span><span>);
</span></span>
一般的に使用されるフォーマットされた文字は次のとおりです。
%y :4桁の年(例:2025)
%M :2桁の月(01〜12)
%D :2桁の日付(01〜31)
%H :2桁の時間(00〜23)
%M :2桁分(00〜59)
%S :2桁の秒(00〜59)
このようにして、時間を必要な形式に変換できます。
localtime()とstrftime()関数を組み合わせて、柔軟で多様な時間フォーマットを実装できます。まず、 LocalTime()を使用して現在の現地時間の配列を取得し、次に配列をタイムスタンプに変換し、 Strftime()を使用して出力をフォーマットします。
<span><span><span class="hljs-comment">// 現時点で現地時間情報を取得します</span></span><span>
</span><span><span class="hljs-variable">$localTime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">localtime</span></span><span>();
</span><span><span class="hljs-comment">// タイムスタンプを作成します</span></span><span>
</span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mktime</span></span><span>(
</span><span><span class="hljs-variable">$localTime</span></span><span>[</span><span><span class="hljs-number">2</span></span><span>], // 時間
</span><span><span class="hljs-variable">$localTime</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>], // 分
</span><span><span class="hljs-variable">$localTime</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>], // 2番
</span><span><span class="hljs-variable">$localTime</span></span><span>[</span><span><span class="hljs-number">4</span></span><span>] + </span><span><span class="hljs-number">1</span></span><span>, // 月(追加する必要があります</span><span><span class="hljs-number">1</span></span><span>,因为数组から</span><span><span class="hljs-number">0</span></span><span>始める)
</span><span><span class="hljs-variable">$localTime</span></span><span>[</span><span><span class="hljs-number">3</span></span><span>] + </span><span><span class="hljs-number">1</span></span><span>, // 日付(同理追加する必要があります</span><span><span class="hljs-number">1</span></span><span>)
</span><span><span class="hljs-variable">$localTime</span></span><span>[</span><span><span class="hljs-number">5</span></span><span>] + </span><span><span class="hljs-number">1900</span></span><span> // 年(追加する必要があります</span><span><span class="hljs-number">1900</span></span><span>)
);
</span><span><span class="hljs-comment">// 使用 strftime フォーマット時間</span></span><span>
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"%Y-%m-%d %H:%M:%S"</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-variable">$format</span></span><span>, </span><span><span class="hljs-variable">$timestamp</span></span><span>);
</span></span>
上記のコードは、最初にlocaltime()を介して現在の現地時間情報を取得し、次に有効なタイムスタンプを構築し、最後にstrftime()を使用して時間をフォーマットして出力します。
ログファイルタイムスタンプ:
ロギングシステムでは、各ログにタイムスタンプを追加する必要があることが多く、フォーマット要件は非常に高くなっています。 localtime()およびstrftime()関数を使用すると、複数の時間形式のタイムスタンプは要件に応じて生成できます。
<span><span><span class="hljs-variable">$logTime</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-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ログ時間: <span class="hljs-subst">$logTime</span></span></span><span>\n";
</span></span>
カスタム日付形式:
いくつかのアプリケーションシナリオでは、日付形式を地域またはユーザーのニーズに応じてカスタマイズする必要がある場合があります。 strftime()を使用すると、「2025年7月13日」や「2025-07-13 14:35:20」など、さまざまな日付形式を簡単に実装できます。
<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日"</span></span><span>, </span><span><span class="hljs-variable">$timestamp</span></span><span>); </span><span><span class="hljs-comment">// 出力 "2025年07月13日"</span></span><span>
</span></span>
ファイル名を動的に生成します。
ファイルの命名では、ファイル名の一部としてタイムスタンプを使用すると、ファイル名の一意性が保証されます。例: log_2025-07-13_14-35-20.txt 。
<span><span><span class="hljs-variable">$filename</span></span><span> = </span><span><span class="hljs-string">"ログ_"</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-variable">$timestamp</span></span><span>) . </span><span><span class="hljs-string">".txt"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ファイル名: <span class="hljs-subst">$filename</span></span></span><span>\n";
</span></span>
LocalTime()とSTRFTIME()関数を組み合わせることにより、PHP開発者はより柔軟に時間と日付を処理し、特定の形式を満たすタイム文字列を生成できます。ロギング、ファイルの命名、または日付の動的表示など、これら2つの機能の使用を習得すると、開発効率とコード読みやすさが大幅に向上します。