1. 獲取時間和日期
date()函數用來獲取並格式化日期和時間,它帶有兩個參數,第一個是格式字符串,第二個可選參數是UNIX時間戳。如果沒有指定時間戳,在默認的情況下,date()函數將返回當前的日期和時間,例如:
echo date('jS F Y');
代碼 | 描述 |
---|---|
a | 上午或下午,小寫字符表示,"am"或"pm"。 |
A | 上午或下午,大寫字符表示,"AM"或"PM"。 |
B | Swatch Internet時間。 |
c | ISO 8601日期,日期用YYYY-MM-DD表示,時間用HH:MM:SS表示。 |
d | 月份中的日期,有前導0,如"05"。 |
D | 星期,縮略字符表示,如"Mon"。 |
e | 時區識別器。 |
F | 年中的月份,全寫,如"January"。 |
g | 日期中的時間,12小時制,無前導0,從"1"到"12"。 |
G | 日期中的時間,24小時制,無前導0,從"0"到"23"。 |
h | 日期中的時間,12小時制,有前導0,從"01"到"12"。 |
H | 日期中的時間,24小時制,有前導0,從"00"到"23"。 |
i | 小時中的分鐘,有前導0,從"00"到"59"。 |
I | 夏令時制,以布爾值表示,若爲夏令值,返回"1",否則返回"0"。 |
j | 月份中的日期,無前導0,如"5"。 |
l | 星期,全寫,如"Sunday"。 |
L | 閏年,以布爾值表示,如果日期所在年是閏年,返回"1",否則返回"0"。 |
m | 年中的月份,有前導0,從"01"到"12"。 |
M | 年中的月份,縮略字符表示,如"Jan"。 |
n | 年中的月份,無前導0,從"1"到"12"。 |
o | ISO 8601的年份數。 |
O | 當前時區與格林威治時間之間小時時差。 |
r | RFC822格式的日期,如"Wed, 1 Jul 2010 18:10:10 + 1600"。 |
s | 分鐘中的秒數,有前導0,從"00"到"59"。 |
S | 日期後綴,以兩個字符表示,如"st"、"nd"、"rd"。 |
t | 月份的天數,從"28"到"31"。 |
T | 服務器的時間區域設置,如"EST"。 |
U | UNIX時間戳。 |
w | 星期,數字表示,從"0"(星期日)到"6"(星期六)。 |
W | 一年的星期數。 |
y | 年份,兩位數,如"12"。 |
Y | 年份,四位數,如"2012"。 |
z | 日期,數字表示,從"0"到"365"。 |
Z | 與當前時區的時區差,單位爲秒,從"-43200"到"43200"。 |
2. UNIX時間戳
大多數UNIX系統保存當前日期和時間的方法是:保存格林威治時間從1970年1月1日零點起到當前時刻的秒數,以32位整列表示,其中1970年1月1日零點也叫UNIX紀元。
雖然這是UNIX慣例,但是即使在Windows服務器中運行PHP,這個格式仍然被date()函數和許多的PHP其他函數使用。不同的是,對於Windows,時間戳必須是正數。
將日期和時間轉變成UNIX時間戳,可以使用mktime()函數,原型如下:
int mktime([int hour[, int minute[, int second [, int month[, int year[, int is_dst]]]]]])
參數is_dst表示該日期所示的時間是否是夏令時,如果是,可以將其設置爲1,如果不是,設置爲0,如果不知道,則設置爲-1(默認值)。如果對應參數爲空,將默認爲當前時間。因此如果獲取當前的UNIX時間戳,通過如下方式:
$time = mktime();
3. 時間函數
getdate()函數能夠確定當前時間,原型如下:
array getdate([int timestamp])
它以時間戳爲可選參數,返回一個相關數組,表示日期和時間的各個部分。
關鍵字 | 值 |
---|---|
seconds | 秒鐘,數字 |
minutes | 分鐘,數字 |
hours | 小時,數字 |
mday | 月份中的日期,數字 |
wday | 星期,數字 |
mon | 月份,數字 |
year | 年份,數字 |
yday | 年份中的日期,數字 |
weekday | 星期,全寫 |
month | 月份,全寫 |
0 | 時間戳,數字 |
可以調用checkdate()函數來檢驗日期是否有效,原型如下:
int checkdate(int month, int day, int year)
使用strftime()函數,可以根據系統的locale來格式化一個時間戳,原型如下:
string strftime(string format[, int timestamp])
如果希望以更短的時間段來計量時間,必須使用microtime()函數,它將返回浮點數的時間戳,它與mktime()函數、time()函數或date()函數的返回值相同,但是還有小數部分,例如:
echo number_format(microtime(true), 10, '.', '');