PHP 日期
PHP date() 函數(shù)用于格式化時(shí)間/日期。
PHP 時(shí)間戳
UNIX 時(shí)間戳(timestamp)是 PHP 中關(guān)于時(shí)間日期一個(gè)很重要的概念,它表示從 1970年1月1日 00:00:00 到當(dāng)前時(shí)間的秒數(shù)之和。
PHP提供了內(nèi)置函數(shù) time() 來(lái)取得服務(wù)器當(dāng)前時(shí)間的時(shí)間戳。
例子:
<?php echo time(); ?>
上面的例子運(yùn)行后得到的是一串類似這樣的數(shù)字:1379115455
有效的時(shí)間戳典型范圍是格林威治時(shí)間 1901年12月13日 20:45:54 到 2038年1月19日 03:14:07(此范圍符合 32 位有符號(hào)整數(shù)的最小值和最大值)。 不過(guò)從 5.1.0 起,已經(jīng)克服了年的范圍只能是 1901 到 2038 之間的問(wèn)題。
提示
1. time() 得到的總是當(dāng)前的時(shí)間戳,所以是不固定的值
2. 如果時(shí)間戳為負(fù)數(shù),則為從1970年1月1日 00:00:00往前推
日期轉(zhuǎn)換為時(shí)間戳
PHP 提供了函數(shù)可以方便的將各種形式的日期轉(zhuǎn)換為時(shí)間戳,該類函數(shù)主要是:
??strtotime():將任何英文文本的日期時(shí)間描述解析為時(shí)間戳。
??mktime():從日期取得時(shí)間戳。
strtotime() 函數(shù)用于將英文文本字符串表示的日期轉(zhuǎn)換為時(shí)間戳,為 date() 的反函數(shù),成功返回時(shí)間戳,否則返回 FALSE 。
語(yǔ)法:
int strtotime ( string time [, int now] )
參數(shù) time 為被解析的字符串,是根據(jù) GNU 日期輸入格式表示的日期。
<?php echo strtotime("2009-10-21 16:00:10"); //輸出類似 1256112010 echo strtotime("10 September 2008"); //輸出類似 1220976000 echo strtotime("+1 day"), "<br />"; //輸出明天此時(shí)的時(shí)間戳 ?>
mktime() 函數(shù)用于從日期取得時(shí)間戳,成功返回時(shí)間戳,否則返回 FALSE 。
語(yǔ)法:
int mktime(時(shí), 分, 秒, 月, 日, 年)
例子:
<?php echo mktime(21, 50, 55, 07, 14, 2010); //輸出“1279115455” ?>
?參數(shù)可以從右向左省略,任何省略的參數(shù)會(huì)被設(shè)置成本地日期和時(shí)間的當(dāng)前值。
mktime() 在做日期計(jì)算和驗(yàn)證方面很有用,它會(huì)自動(dòng)計(jì)算超出范圍的輸入的正確值。例如下面例子輸出的都是 2008-01-01:
<?php echo date("Y-m-d", mktime(0, 0, 0, 12, 32, 2007)); echo date("Y-m-d", mktime(0, 0, 0, 13, 1, 2007)); ?>
?下個(gè)月的最后一天:
任何給定月份的最后一天都可以被表示為下個(gè)月的第 "0" 天,而不是 -1 天,如下面的例子:
<?php $lastday = mktime(0, 0, 0, 3, 0, 2008); echo strftime("2008年最后一天是:%d", $lastday); ?>
?瀏覽器輸出:
2008年最后一天是:29
PHP date() 函數(shù)
PHP date() 函數(shù)可把時(shí)間戳格式化為可讀性更好的日期和時(shí)間。
時(shí)間戳是一個(gè)字符序列,表示一定的事件發(fā)生的日期/時(shí)間。
語(yǔ)法
string date ( string $format [, int $timestamp ] )
參數(shù) ? ? ? ? ? ? ? ? ??描述
format ? ? ? ? ? ? ? 必需。規(guī)定時(shí)間戳的格式。 ? ?
timestamp ? ? ? ? 可選。規(guī)定時(shí)間戳。默認(rèn)是當(dāng)前的日期和時(shí)間。?
? ?PHP Date() - 格式化日期
date() 函數(shù)的第一個(gè)必需參數(shù)?format?規(guī)定了如何格式化日期/時(shí)間。
這里列出了一些可用的字符:
d - 代表月中的天 (01 - 31)
m - 代表月 (01 - 12)
Y - 代表年 (四位數(shù))
如需了解?format?參數(shù)中可用的所有字符列表,請(qǐng)查閱我們的 PHP Date 參考手冊(cè),?date() 函數(shù)。
可以在字母之間插入其他字符,比如 "/"、"." 或者 "-",這樣就可以增加附加格式了:
<?php echo date("Y/m/d") . "<br>"; echo date("Y.m.d") . "<br>"; echo date("Y-m-d"); ?>
上面代碼的輸出如下所示:
? ? ? ?2016/05/11<br>
? ? ? ?2016.05.11<br>
? ? ? ?2016-05-11 ? ? ? ? ? ?
后面還有幾個(gè)參數(shù):
h 的英文為:hour 代表小時(shí)
i的英文為:minute 代表分鐘
s的英文為:second 代表秒
寫(xiě)全了就是:
<?php //就可以顯示出來(lái)當(dāng)前的時(shí)間了喲。 echo date('Y-m-d H:i:s'); ?>
格式字串可以識(shí)別以下?format?參數(shù)的字符串
format字符 ? ? ? ??說(shuō)明 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回值例子
日 ? ? ? ? ? ? ? ? ? ? ? ? --- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--- ? ?
d ? ?月份中的第幾天,有前導(dǎo)零的 2 位數(shù)字 ? ? ? ? ?01?到?31 ? ?
D ? ?星期中的第幾天,文本表示,3 個(gè)字母 ? ? ? ? ? Mon?到?Sun ? ?
j ? ?月份中的第幾天,沒(méi)有前導(dǎo)零 ? ? ? ? ? ? ? ? ? ? ? ? ?1?到?31 ? ?
l("L"的小寫(xiě)字母) ? ?星期幾,完整的文本格式 ? ?Sunday?到?Saturday ? ?
N ? ?ISO-8601 格式數(shù)字表示的星期中的第幾天(PHP 5.1.0 新加) ? ?1(表示星期一)到?7(表示星期天) ? ?
S ? ?每月天數(shù)后面的英文后綴,2 個(gè)字符 ? ? ? ? ? ? ? ?st,nd,rd?或者?th??梢院?j?一起用 ? ?
w ? ?星期中的第幾天,數(shù)字表示 ? ? ? ? ? ? ? ? ? ? ? ? ? 0(表示星期天)到?6(表示星期六) ? ?
z ? ?年份中的第幾天 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0?到?365 ? ?
星期 ? ?--- ? ?--- ? ?
W ? ?ISO-8601 格式年份中的第幾周,每周從星期一開(kāi)始(PHP 4.1.0 新加的) ? ?例如:42(當(dāng)年的第 42 周) ? ?
月 ? ?--- ? ?--- ? ?
F ? ?月份,完整的文本格式, ? ? ? ? ? ? ? ? ? ? ? ? ? ? 例如 January 或者 March ? ?January?到?December ? ?
m ? ?數(shù)字表示的月份,有前導(dǎo)零 ? ? ? ? ? ? ? ? ? ? ? ?01?到?12 ? ?
M ? ?三個(gè)字母縮寫(xiě)表示的月份 ? ? ? ? ? ? ? ? ? ? ? ? ? Jan?到?Dec ? ?
n ? ?數(shù)字表示的月份,沒(méi)有前導(dǎo)零 ? ? ? ? ? ? ? ? ? ? 1?到?12 ? ?
t ? ?給定月份所應(yīng)有的天數(shù) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?28?到?31 ? ?
年 ? ?--- ? ?--- ? ?
L ? ?是否為閏年 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果是閏年為?1,否則為?0 ? ?
o ? ?ISO-8601 格式年份數(shù)字。這和?Y?的值相同,只除了如果 ISO 的星期數(shù)(W)屬于前一年或下一年,則用那一年。(PHP 5.1.0 新加) ? ?Examples:?1999?or?2003 ? ?
Y ? ?4 位數(shù)字完整表示的年份 ? ? ? ? ? ? ? ? ? ? ? ? ? ?例如:1999?或?2003 ? ?
y ? ?2 位數(shù)字表示的年份 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 例如:99?或?03 ? ?
時(shí)間 ? ?--- ? ?--- ? ?
a ? ?小寫(xiě)的上午和下午值 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? am?或?pm ? ?
A ? ?大寫(xiě)的上午和下午值 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? AM?或?PM ? ?
B ? ?Swatch Internet 標(biāo)準(zhǔn)時(shí) ? ? ? ? ? ? ? ? ? ? ? ? ? ? 000?到?999 ? ?
g ? ?小時(shí),12 小時(shí)格式,沒(méi)有前導(dǎo)零 ? ? ? ? ? ? ? ? ?1?到?12 ? ?
G ? ?小時(shí),24 小時(shí)格式,沒(méi)有前導(dǎo)零 ? ? ? ? ? ? ? ? 0?到?23 ? ?
h ? ?小時(shí),12 小時(shí)格式,有前導(dǎo)零 ? ? ? ? ? ? ? ? ? ?01?到?12 ? ?
H ? ?小時(shí),24 小時(shí)格式,有前導(dǎo)零 ? ? ? ? ? ? ? ? ? ?00?到?23 ? ?
i ? ?有前導(dǎo)零的分鐘數(shù) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?00?到?59> ? ?
s ? ?秒數(shù),有前導(dǎo)零 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 00?到?59> ? ?
u ? ?毫秒 (PHP 5.2.2 新加)。需要注意的是?date()函數(shù)總是返回?000000?因?yàn)樗唤邮?integer?參數(shù), 而?DateTime::format()?才支持毫秒。 ? ?示例:?654321 ? ?
時(shí)區(qū) ? ?--- ? ?--- ? ?
e ? ?時(shí)區(qū)標(biāo)識(shí)(PHP 5.1.0 新加) ? ?例如:UTC,GMT,Atlantic/Azores ? ?
I ? ?是否為夏令時(shí) ? ?如果是夏令時(shí)為?1,否則為?0 ? ?
O ? ?與格林威治時(shí)間相差的小時(shí)數(shù) ? ?例如:+0200 ? ?
P ? ?與格林威治時(shí)間(GMT)的差別,小時(shí)和分鐘之間有冒號(hào)分隔(PHP 5.1.3 新加) ? ?例如:+02:00 ? ?
T ? ?本機(jī)所在的時(shí)區(qū) ? ?例如:EST,MDT(【譯者注】在 Windows 下為完整文本格式,例如"Eastern Standard Time",中文版會(huì)顯示"中國(guó)標(biāo)準(zhǔn)時(shí)間")。 ? ?
Z ? ?時(shí)差偏移量的秒數(shù)。UTC 西邊的時(shí)區(qū)偏移量總是負(fù)的,UTC 東邊的時(shí)區(qū)偏移量總是正的。 ? ?-43200?到?43200 ? ?
完整的日期/時(shí)間 ? ?--- ? ?--- ? ?
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 紀(jì)元(January 1 1970 00:00:00 GMT)開(kāi)始至今的秒數(shù) ? ?參見(jiàn)?time() ? ?
完整的 PHP Date 參考手冊(cè)
如需查看所有日期函數(shù)的完整參考手冊(cè),請(qǐng)?jiān)L問(wèn)我們的?完整的 PHP Date 參考手冊(cè)。
該參考手冊(cè)提供了每個(gè)函數(shù)的簡(jiǎn)要描述和應(yīng)用實(shí)例!