PHPdate格式化一個本地時間/日期

thinkyoung發表於2015-08-28

PHP date 格式化一個本地時間/日期

date

(PHP 4, PHP 5)

date — 格式化一個本地時間/日期

說明

string date ( string $format [, int $timestamp ] )

返回將整數 timestamp 按照給定的格式字串而產生的字串。如果沒有給出時間戳則使用本地當前時間。換句話說,timestamp 是可選的,預設值為 time()

Tip

自 PHP 5.1.1 起有幾個有用的常量可用作標準的日期/時間格式來指定 format 引數。

Tip

自 PHP 5.1 起在 $_SERVER[`REQUEST_TIME`] 中儲存了發起該請求時刻的時間戳。

Note:

有效的時間戳典型範圍是格林威治時間 1901 年 12 月 13 日 20:45:54 到 2038 年 1 月 19 日 03:14:07。(此範圍符合 32 位有符號整數的最小值和最大值)。不過在 PHP 5.1 之前此範圍在某些系統(如 Windows)中限制為從 1970 年 1 月 1 日到 2038 年 1 月 19 日。

 

Note:

要將字串表達的時間轉換成時間戳,應該使用 strtotime()。此外一些資料庫有一些函式將其時間格式轉換成時間戳(例如 MySQL 的 » UNIX_TIMESTAMP 函式)。

 

 

格式字串可以識別以下 format 引數的字串
format字元
說明
返回值例子



d
月份中的第幾天,有前導零的 2 位數字

01 到 31
D
星期中的第幾天,文字表示,3 個字母

Mon 到 Sun
j
月份中的第幾天,沒有前導零

1 到 31
l(“L”的小寫字母)
星期幾,完整的文字格式

Sunday 到 Saturday
N
ISO-8601 格式數字表示的星期中的第幾天(PHP 5.1.0 新加)

1(表示星期一)到 7(表示星期天)
S
每月天數後面的英文字尾,2 個字元

stndrd 或者 th。可以和 j 一起用
w
星期中的第幾天,數字表示

0(表示星期天)到 6(表示星期六)
z
年份中的第幾天

0 到 366
星期


W
ISO-8601 格式年份中的第幾周,每週從星期一開始(PHP 4.1.0 新加的)
例如:42(當年的第 42 周)



F
月份,完整的文字格式,例如 January 或者 March

January 到 December
m
數字表示的月份,有前導零

01 到 12
M
三個字母縮寫表示的月份

Jan 到 Dec
n
數字表示的月份,沒有前導零

1 到 12
t
給定月份所應有的天數

28 到 31



L
是否為閏年
如果是閏年為 1,否則為 0
o
ISO-8601 格式年份數字。這和 Y 的值相同,只除了如果 ISO 的星期數(W)屬於前一年或下一年,則用那一年。(PHP 5.1.0 新加)
Examples: 1999 or 2003
Y
4 位數字完整表示的年份
例如:1999 或 2003
y
2 位數字表示的年份
例如:99 或 03
時間


a
小寫的上午和下午值

am 或 pm
A
大寫的上午和下午值

AM 或 PM
B
Swatch Internet 標準時

000 到 999
g
小時,12 小時格式,沒有前導零

1 到 12
G
小時,24 小時格式,沒有前導零

0 到 23
h
小時,12 小時格式,有前導零

01 到 12
H
小時,24 小時格式,有前導零

00 到 23
i
有前導零的分鐘數

00 到 59>
s
秒數,有前導零

00 到 59>
時區


e
時區標識(PHP 5.1.0 新加)
例如:UTCGMTAtlantic/Azores
I
是否為夏令時
如果是夏令時為 1,否則為 0
O
與格林威治時間相差的小時數
例如:+0200
P
與格林威治時間(GMT)的差別,小時和分鐘之間有冒號分隔(PHP 5.1.3 新加)
例如:+02:00
T
本機所在的時區
例如:ESTMDT(【譯者注】在 Windows 下為完整文字格式,例如“Eastern Standard Time”,中文版會顯示“中國標準時間”)。
Z
時差偏移量的秒數。UTC 西邊的時區偏移量總是負的,UTC 東邊的時區偏移量總是正的。

-43200 到 43200
完整的日期/時間


c
ISO 8601 格式的日期(PHP 5 新加)
2004-02-12T15:19:21+00:00
r
RFC 822 格式的日期
例如:Thu, 21 Dec 2000 16:01:07 +0200
U
從 Unix 紀元(January 1 1970 00:00:00 GMT)開始至今的秒數
參見 time()

 

格式字串中不能被識別的字元將原樣顯示。Z 格式在使用 gmdate() 時總是返回 0

 

Example #1 date() 例子

<?php
// 設定要用的預設時區。自 PHP 5.1 可用
date_default_timezone_set(`UTC`);

// 輸出類似:Monday
echo date("l");

// 輸出類似:Monday 15th of August 2005 03:12:46 PM
echo date(`l dS of F Y h:i:s A`);

// 輸出:July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

/* 在格式引數中使用常量 */
// 輸出類似:Mon, 15 Aug 2005 15:12:46 UTC
echo date(DATE_RFC822);

// 輸出類似:2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>

 

在格式字串中的字元前加上反斜線來轉義可以避免它被按照上表解釋。如果加上反斜線後的字元本身就是一個特殊序列,那還要轉義反斜線。

Example #2 在 date() 中轉義字元

<?php
// prints something like: Wednesday the 15th
echo date("l  he jS");
?>

 

可以把 date() 和 mktime() 結合使用來得到未來或過去的日期。

Example #3 date() 和 mktime() 例子

<?php
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);
?>

Note:

由於夏令時的緣故,這種方法比簡單地在時間戳上加減一天或者一個月的秒數更可靠。

 

 

一些使用 date() 格式化日期的例子。注意要轉義所有其它的字元,因為目前有特殊含義的字元會產生不需要的結果,而其餘字元在 PHP 將來的版本中可能會被用上。當轉義時,注意用單引號以避免類似 的字元變成了換行符。

Example #4 date() 格式舉例

<?php
// 假定今天是:March 10th, 2001, 5:16:18 pm
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date(`h-i-s, j-m-y, it is w Day z `);  // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$today = date(`i  is  he jS day.`);   // It is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 15:16:08 MST 2001
$today = date(`H:m:s m is mo h`);     // 17:03:17 m is month
$today = date("H:i:s");                         // 17:16:17
?>

 

要格式化其它語種的日期,應該用 setlocale() 和 strftime() 函式來代替 date()

參見 getlastmod()gmdate()mktime()strftime() 和 time()


相關文章