當前位置: 首頁> 最新文章列表> 利用localtime() 結合strftime() 函數,輕鬆實現多樣化時間格式化

利用localtime() 結合strftime() 函數,輕鬆實現多樣化時間格式化

gitbox 2025-09-04

在PHP 中,時間和日期的處理是開發中常見的需求,尤其是在日誌記錄、數據顯示、文件命名等場景中,格式化時間往往是一個不容忽視的任務。 PHP 提供了許多函數來幫助開發者進行時間的格式化,其中localtime()strftime()函數的組合,能夠讓你輕鬆實現多樣化的時間格式化需求。

一、localtime() 函數概述

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>] =&gt; 秒
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; 分鐘
    [</span><span><span class="hljs-meta">2</span></span><span>] =&gt; 小時
    [</span><span><span class="hljs-meta">3</span></span><span>] =&gt; 一周的第幾天 (</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>] =&gt; 月份 (</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>] =&gt; 年份 (從</span><span><span class="hljs-number">1900</span></span><span>年開始的年數)
    [</span><span><span class="hljs-meta">6</span></span><span>] =&gt; 一年中的第幾天 (</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>] =&gt; 夏令時標誌 (</span><span><span class="hljs-number">0</span></span><span>=否, </span><span><span class="hljs-number">1</span></span><span>=是)
)
</span></span>

通過對該數組的訪問,我們可以精確地獲取不同部分的時間信息,例如小時、分鐘、月份等。

二、strftime() 函數概述

strftime()函數用於根據指定的格式化字符串來格式化時間。它接受兩個參數,第一個是格式化字符串,第二個是一個可選的時間戳參數,如果不提供,則默認為當前時間。

 <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 :四位數的年份(例如:2025)

  • %m :兩位數的月份(01到12)

  • %d :兩位數的日期(01到31)

  • %H :兩位數的小時(00到23)

  • %M :兩位數的分鐘(00到59)

  • %S :兩位數的秒數(00到59)

通過這種方式,我們可以將時間轉化為自己所需要的格式。

三、localtime() 和strftime() 結合使用

結合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>],   // 秒
    </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()格式化並輸出時間。

四、常見應用場景

  1. 日誌文件時間戳:

    在日誌記錄系統中,我們常常需要為每條日誌添加時間戳,並且格式要求很高。使用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>
  2. 自定義日期格式:

    在某些應用場景中,日期格式可能需要根據地區或用戶需求進行自定義。通過strftime() ,可以輕鬆實現各種日期格式,比如"2025年07月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>
  3. 動態生成文件名:

    在文件命名中,使用時間戳作為文件名的一部分,可以確保文件名的唯一性。例如:日誌_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 開發者能夠更加靈活地處理時間和日期,生成符合特定格式的時間字符串。無論是在日誌記錄、文件命名還是動態顯示日期,掌握這兩個函數的使用將極大提高開發效率和代碼的可讀性。