PHPでは、通常、各イベントが発生したときに特定の時間をマークするタイムスタンプを含むログ情報を記録する必要があることがよくあります。ログファイルの時間形式がプロジェクトの要件を満たしていることを確認するため、またはさまざまな言語領域のニーズを満たすために、 setlocale()関数とstrftime()関数は非常に重要なツールです。
この記事では、実用的な例を使用して、 setlocale()を使用してログ内のタイムスタンプを設定およびフォーマットする方法を説明します。
setLocale()関数
setlocale()関数は、プログラムのロケール環境を設定するために使用されます。ロケールは、日付、時間、数値、通貨などの書式設定方法に影響します。SetLocale ()を使用して、中国語、英語、フランス語などのさまざまな地域のニーズを満たすためにLocale()を設定できます。
<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>
上記のコードは、ロケールを中国語(中国)に設定し、エンコーディングがUTF-8であることを指定します。
strftime()関数
strftime()関数は、指定されたフォーマットされた文字列と現在のロケール設定に基づいて、フォーマットされた日付または時刻文字列を返します。この関数は、時間のカスタムフォーマットに非常に役立ちます。
<span><span><span class="hljs-variable">$formatted_time</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-variable">$formatted_time</span></span><span>; </span><span><span class="hljs-comment">// 出力:2025年06月20日 10:30:15</span></span><span>
</span></span>
実際のプロジェクトでは、通常、システムエラー、ユーザー操作、タスク実行などのログを記録します。通常、ログのタイムスタンプは、時間の読みやすさと一貫性を確保するために、さまざまなニーズに従ってフォーマットする必要があります。
setlocale()とstrftime()を使用してログファイルのタイムスタンプをフォーマットする方法の実用的な例を次に示します。
ログファイルに日付、時刻、ログの詳細の出力を必要とする単純なロギングシステムがあるとします。現在のロケールに基づいて、ログ内のタイムスタンプをフォーマットします。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// エリアを中国語に設定します(中国),ASをエンコードしますUTF-8</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-variable">$current_timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">time</span></span><span>();
</span><span><span class="hljs-comment">// タイムスタンプをフォーマットします</span></span><span>
</span><span><span class="hljs-variable">$formatted_time</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">$current_timestamp</span></span><span>);
</span><span><span class="hljs-comment">// ログコンテンツ</span></span><span>
</span><span><span class="hljs-variable">$log_message</span></span><span> = </span><span><span class="hljs-string">"システムの起動に成功しました!"</span></span><span>;
</span><span><span class="hljs-comment">// ログファイルを開き、ログに書き込みます</span></span><span>
</span><span><span class="hljs-variable">$log_file</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-string">'system.log'</span></span><span>, </span><span><span class="hljs-string">'a'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$log_file</span></span><span>) {
</span><span><span class="hljs-variable">$log_entry</span></span><span> = </span><span><span class="hljs-variable">$formatted_time</span></span><span> . </span><span><span class="hljs-string">" - "</span></span><span> . </span><span><span class="hljs-variable">$log_message</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">fwrite</span></span><span>(</span><span><span class="hljs-variable">$log_file</span></span><span>, </span><span><span class="hljs-variable">$log_entry</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$log_file</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ログが記録されています!"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ログファイルを開くことができません!"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
setLocale()は、ロケール環境を設定します。
SetLocale(LC_TIME、 'zh_cn.utf-8')は、ロケールを中国語(中国)に設定し、UTF-8としてエンコードするために使用され、日付と時刻が中国形式で表示されます。
現在のタイムスタンプを取得します:
Time()関数を使用して、現在のUNIXタイムスタンプを取得します。
フォーマットタイムスタンプ:
STRFTIME()は、指定された形式に従って、タイムスタンプを文字列「aire-mon-mon-mon-mon-mon-monthey-time:minute:second」にフォーマットするために使用されます。ここでは、 %y (4桁の年)、 %m (月)、 %d (day)、 %h (hour)、 %m (minute)、 %s (秒)などのフォーマット記号が使用されます。
ログファイルに書き込む:
fopen()を使用してログファイルを開き、 fwrite()はフォーマットされた時間とログコンテンツをファイルに書き込み、 fclose()はファイルを閉じます。
ログ出力:
各ログは、「yyyyy mm month dd day hh:mm:ss -message」という形式でファイルに書き込まれます。
<span><span><span class="hljs-number">2025</span></span><span><span class="hljs-string">年06月20日</span></span><span> </span><span><span class="hljs-number">10</span></span><span><span class="hljs-string">:30:15</span></span><span> </span><span><span class="hljs-bullet">-</span></span><span> </span><span><span class="hljs-string">システムの起動に成功しました!</span></span><span>
</span></span>
setlocale()とstrftime()を使用することにより、PHPのログ内のタイムスタンプを便利に設定およびフォーマットして、ログの時間表示が特定のロケール要件と形式の要件に準拠するようにします。ログの時間形式は異なる領域またはロケールで異なる場合があるため、これらの機能を使用すると、ログの読みやすさとローカリゼーションのサポートが向上する可能性があります。
実際のアプリケーションでは、特定の時間形式の要件を満たすためのニーズに応じて、形式の文字列を調整できます。