|
strftime (PHP 3, PHP 4, PHP 5) strftime -- 根據區功能變數設定格式化本地時間/日期 說明string strftime ( string format [, int timestamp] )
返回用給定的格式字串對給出的 timestamp
進行格式輸出後的字串。若果沒有給出時間戳則用現用的的本地時間。月份和星期幾以及其它和語系有關的字串寫法和用
setlocale() 設定的現用的的區功能變數有關。
格式字串能識別下列轉換旗標:
%a - 現用的區功能變數星期幾的簡寫
%A - 現用的區功能變數星期幾的全稱
%b - 現用的區功能變數月份的簡寫
%B - 現用的區功能變數月份的全稱
%c - 現用的區功能變數偏好的日期時間表達
%C - 世紀值(年份除以 100 後取整,範圍從 00 到 99)
%d - 月份中的第幾天,十進位數字(範圍從 01 到 31)
%D - 和 %m/%d/%y 一樣
%e - 月份中的第幾天,十進位數字,一位的數字前會加上一個空格(範圍從 ' 1' 到 '31')
%g - 和 %G 一樣,但是沒有世紀
%G - 4 位數的年份,符合 ISO 星期數(參見
%V)。和 %V 的格式和值一樣,只除了若果 ISO
星期數屬於前一年或是後一年,則使用那一年。
%h - 和 %b 一樣
%H - 24 小時制的十進位小時數(範圍從 00 到 23)
%I - 12 小時制的十進位小時數(範圍從 00 到 12)
%j - 年份中的第幾天,十進位數(範圍從 001 到 366)
%m - 十進位月份(範圍從 01 到 12)
%M - 十進位分鐘數
%n - 換行符
%p - 根據給定的時間值為 `am' 或 `pm',或是現用的區功能變數設定中的相應字串
%r - 用 a.m. 和 p.m. 符號的時間
%R - 24 小時符號的時間
%S - 十進位秒數
%t - 製表符
%T - 現用的時間,和 %H:%M:%S 一樣
%u - 星期幾的十進位數表達 [1,7],1 表示星期一
警示 |
儘管 ISO 9889:1999(現用的的 C 標準)明確指出一周從星期一開始,但是
Sun Solaris 的一周似乎從星期天開始並作為 1。
|
%U - 本年的第幾周,從第一周的第一個星期天作為第一天開始
%V - 本年第幾周的 ISO 8601:1988 格式,範圍從 01 到 53,第
1 周是本年第一個至少還有 4 天的星期,星期一作為每週的第一天。(用
%G 或是 %g 作為指定時間戳相應周數的年份組成。)
%W - 本年的第幾周數,從第一周的第一個星期一作為第一天開始
%w - 星期中的第幾天,星期天為 0
%x - 現用的區功能變數偏好的時間表示法,不內含時間
%X - 現用的區功能變數偏好的時間表示法,不內含日期
%y - 沒有世紀數的十進位年份(範圍從 00 到 99)
%Y - 內含世紀數的十進位年份
%Z 或 %z - 時區名或縮寫
%% - 文字上的 `%' 字元
注:
可能不是所有的轉換旗標都被 C 庫檔案支援,這種情況下 PHP
的 strftime()
也不支援。此外,不是所有的平台都支援負的時間戳,因此日期的範圍可能限定在不早於
Unix 紀元。這意味著例如
%e, %T,%R 和 %D(可能更多)以及早於
Jan 1, 1970 的時間在 Windows,一些 Linux
發行版本,以及其它幾個動作系統中無效。對於 Windows
系統,所支援的轉換旗標可在
MSDN 網站找到。
例子 1. strftime() 區功能變數的例子
<?php setlocale(LC_TIME, "C"); echo strftime("%A"); setlocale(LC_TIME, "fi_FI"); echo strftime(" in Finnish is %A,"); setlocale(LC_TIME, "fr_FR"); echo strftime(" in French %A and"); setlocale(LC_TIME, "de_DE"); echo strftime(" in German %A.\n"); ?>
|
|
本例在你的系統中安裝有各自的區功能變數設定後才能工作。
注:
%G 和 %V,若果數字編號系統未能充分理解,基於 ISO 8601:1988
的星期數可能得出未預期的結果。見上面的 %V 和以下的例子。
例子 2. ISO 8601:1988 week number example
<?php /* December 2002 / January 2003 ISOWk M Tu W Thu F Sa Su ----- ---------------------------- 51 16 17 18 19 20 21 22 52 23 24 25 26 27 28 29 1 30 31 1 2 3 4 5 2 6 7 8 9 10 11 12 3 13 14 15 16 17 18 19 */
// Outputs: 12/28/2002 - %V,%G,%Y = 52,2002,2002 echo "12/28/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y", strtotime("12/28/2002")) . "\n";
// Outputs: 12/30/2002 - %V,%G,%Y = 1,2003,2002 echo "12/30/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y", strtotime("12/30/2002")) . "\n";
// Outputs: 1/3/2003 - %V,%G,%Y = 1,2003,2003 echo "1/3/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2003")) . "\n";
// Outputs: 1/10/2003 - %V,%G,%Y = 2,2003,2003 echo "1/10/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/10/2003")) . "\n";
/* December 2004 / January 2005 ISOWk M Tu W Thu F Sa Su ----- ---------------------------- 51 13 14 15 16 17 18 19 52 20 21 22 23 24 25 26 53 27 28 29 30 31 1 2 1 3 4 5 6 7 8 9 2 10 11 12 13 14 15 16 */
// Outputs: 12/23/2004 - %V,%G,%Y = 52,2004,2004 echo "12/23/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/23/2004")) . "\n";
// Outputs: 12/31/2004 - %V,%G,%Y = 53,2004,2004 echo "12/31/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/31/2004")) . "\n";
// Outputs: 1/2/2005 - %V,%G,%Y = 53,2004,2005 echo "1/2/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/2/2005")) . "\n";
// Outputs: 1/3/2005 - %V,%G,%Y = 1,2005,2005 echo "1/3/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2005")) . "\n";
?>
|
|
參見 setlocale(),mktime(),strptime()
以及 Open Group specification of
strftime()。
| |