這篇文章主要介紹了關於php日期函數與php時間函數,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
一:
checkdate() 函數驗證一個日期。
checkdate(month,day,year)
如果指定的值合法,則該函數返回 true,否則返回 false。
日期在下列情況下為合法:
month 介於且包括 1 - 12
Day 的值在給定的 month 所應該具有的天數範圍之內,閏年已經考慮進去了。
year 介於且包括 1 到 32767
例子1:
<?phpvar_dump(checkdate(12,31,2000));//var_dump函數顯示運算式的類型與值var_dump(checkdate(2,29,2003));var_dump(checkdate(2,29,2004));?>顯示:bool(true)bool(false)bool(true)例子2:<?phpif (checkdate(12,31,2009)){echo "a";}else{echo "b";}?>
顯示:
a
date_default_timezone_set() 函數設定用在指令碼中所有日期/時間函數的預設時區。
date_default_timezone_set(timezone)
timezone 必需。時區標識符,比如 "UTC" 或 "Europe/Paris"。
合法時區的列表:http://www.php.net/manual/en/timezones.php
例子
<?phpecho(date_default_timezone_set("Europe/Paris"));?>
顯示:
1
三
date_default_timezone_get() 函數返回指令碼中所有日期時間函數所使用的預設時區。
date_default_timezone_get(void)
void 可選
<?phpecho(date_default_timezone_get());?>
顯示:
Asia/Shanghai
四:
time() 函數返回目前時間的 Unix 時間戳記。
返回自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到目前時間的秒數。
自 PHP 5.1 起在 $_SERVER['REQUEST_TIME'] 中儲存了發起該請求時刻的時間戳記。
例子:
<?php$t=time();echo($t . "<br />");echo(date("D F d Y",$t));?>
1138618081//這是總秒數Mon January 30 2006
五:
date() 函數格式化一個本地時間/日期。
gmdate() 函數格式化 GMT/UTC 日期/時間。同 date() 函數 類似,不同的是返回的時間是格林威治標準時(GMT)。
date(format,timestamp)
format 必須 規定如何返回結果
a - "am" 或是 "pm"
A - "AM" 或是 "PM"
d - 幾日,二位元字,若不足二位則前面補零; 如: "01" 至 "31"
D - 星期幾,三個英文字母; 如: "Fri"
F - 月份,英文全名; 如: "January"
h - 12 小時制的小時; 如: "01" 至 "12"
H - 24 小時制的小時; 如: "00" 至 "23"
g - 12 小時制的小時,不足二位不補零; 如: "1" 至 12"
G - 24 小時制的小時,不足二位不補零; 如: "0" 至 "23"
i - 分鐘; 如: "00" 至 "59"
j - 幾日,二位元字,若不足二位不補零; 如: "1" 至 "31"
l - 星期幾,英文全名; 如: "Friday"
m - 月份,二位元字,若不足二位則在前面補零; 如: "01" 至 "12"
n - 月份,二位元字,若不足二位則不補零; 如: "1" 至 "12"
M - 月份,三個英文字母; 如: "Jan"
s - 秒; 如: "00" 至 "59"
S - 字尾加英文序數,二個英文字母; 如: "th","nd"
t - 指定月份的天數; 如: "28" 至 "31"
U - 總秒數
w - 數字型的星期幾,如: "0" (星期日) 至 "6" (星期六)
Y - 年,四位元字; 如: "1999"
y - 年,二位元字; 如: "99"
z - 一年中的第幾天; 如: "0" 至 "365"
其它不在上列的字元則直接列出該字元。
例子:
<?phpecho("date()的例子:<br />");echo(date("l") . "<br />");//l - 星期幾,英文全名; 如: "Friday" echo(date("l dS \of F Y h:i:s A") . "<br />");//l星期 d日期S英文序數\of顯示of,F Y 月份年,A上下午echo("Oct 3,1975 was on a ".date("l", mktime(0,0,0,10,3,1975))."<br />");echo(date(DATE_RFC822) . "<br />");echo(date(DATE_ATOM,mktime(0,0,0,10,3,1975)) . "<br /><br />");echo("gmdate()格林威治標準時的例子:<br />");echo(gmdate("l") . "<br />");echo(gmdate("l dS \of F Y h:i:s A") . "<br />");echo("Oct 3,1975 was on a ".gmdate("l", mktime(0,0,0,10,3,1975))."<br />");echo(gmdate(DATE_RFC822) . "<br />");echo(gmdate(DATE_ATOM,mktime(0,0,0,10,3,1975)) . "<br />");?>
顯示:
date()的例子:
TuesdayTuesday 23rd of June 2009 01:26:19 PMOct 3,1975 was on a FridayTue, 23 Jun 09 13:26:19 +08001975-10-03T00:00:00+08:00
gmdate()格林威治標準時的例子:
TuesdayTuesday 23rd of June 2009 05:26:19 AMOct 3,1975 was on a ThursdayTue, 23 Jun 09 05:26:19 +00001975-10-02T16:00:00+00:00
六:
getdate() 函數取得日期/時間資訊。
getdate(timestamp)
timestamp可選 規定UNIX時間格式中的時間,沒有則為目前時間
他返回一個根據 timestamp 得出的包含有日期資訊的結合數組。如果沒有給出時間戳記,則認為是當前本地時間。
數組中的單元如下:
"seconds" 秒的數字表示 0 到 59
"minutes" 分鐘的數字表示 0 到 59
"hours" 小時的數字表示 0 到 23
"mday" 月份中第幾天的數字表示 1 到 31
"wday" 星期中第幾天的數字表示 0(表示星期天)到 6(表示星期六)
"mon" 月份的數字表示 1 到 12
"year" 4 位元字表示的完整年份 例如:1999 或 2003
"yday" 一年中第幾天的數字表示 0 到 365
"weekday" 星期幾的完整文本表示 Sunday 到 Saturday
"month" 月份的完整文本表示 January 到 December
0 自從 Unix 紀元開始至今的秒數,和 time() 的傳回值以及用於 date() 的值類似。 系統相關,典型值為從 -2147483648 到 2147483647。
例子:
<?phpprint_r(getdate());?>
顯示:
Array([seconds] => 45[minutes] => 52[hours] => 14[mday] => 24[wday] => 2[mon] => 1[year] => 2006[yday] => 23[weekday] => Tuesday[month] => January[0] => 1138110765)
例子2:
<?php$my_t=getdate(date("U"));print("$my_t[weekday], $my_t[month] $my_t[mday], $my_t[year]");?>
顯示:
Wednesday, January 25, 2006
七:
gettimeofday() 函數返回一個包含目前時間資訊的數組。
所返回的數組鍵的含義是:
"sec" - 自 Unix 紀元起的秒數
"usec" - 微秒數
"minuteswest" - 格林威治向西的分鐘數
"dsttime" - 夏令時修正的類型
gettimeofday(return_float)
return_float 可選。當其設定為 TRUE 時,gettimeofday() 會返回一個浮點數。
例子1
<?phpecho(gettimeofday(true) . "<br /><br />");print_r(gettimeofday());?>
顯示:
1138111447.4
Array([sec] => 1138111447[usec] => 395863[minuteswest] => -60[dsttime] => 0)
例子2:
<?php$my_t=gettimeofday();print("$my_t[sec].$my_t[usec]");?>
顯示:
1138197006.988273
八:
mktime() 函數返回一個日期的 Unix 時間戳記。
gmmktime() 函數取得 GMT 日期的 UNIX 時間戳記。與 mktime() 類似,不同的是傳回值是格林威治標準時的時間戳記。
參數總是表示 GMT 日期,因此 is_dst 對結果沒有影響。與 mktime() 一樣,參數可以從右至左依次空著,空著的參數會被設為
相應的當前 GMT 值。
mktime(hour,minute,second,month,day,year,is_dst)
參數可以從右至左依次空著,空著的參數會被設為相應的當前 格林威治GMT 值。
hour 可選。規定小時。
minute 可選。規定分鐘。
second 可選。規定秒。
month 可選。規定用數字表示的月。
day 可選。規定天。
year 可選。規定年。在某些系統上,合法值介於 1901 - 2038 之間。不過在 PHP 5 中已經不存在這個限制了。
is_dst 可選。如果時間在日光節約時間(DST)期間,則設定為1,否則設定為0,若未知,則設定為-1。
自 5.1.0 起,is_dst 參數被廢棄。因此應該使用新的時區處理特性。
例子
mktime() 函數對於日期運算和驗證非常有用。它可以自動校正越界的輸入:
<?phpecho(date("M-d-Y",mktime(0,0,0,12,36,2001)));echo(date("M-d-Y",mktime(0,0,0,14,1,2001)));echo(date("M-d-Y",mktime(0,0,0,1,1,2001)));echo(date("M-d-Y",mktime(0,0,0,1,1,99)));?>
輸出:
Jan-05-2002Feb-01-2002Jan-01-2001Jan-01-1999
九:
strftime() 函數根據地區設定格式化本地時間/日期。
gmstrftime() 函數根據本地地區設定格式化 GMT/UTC 時間/日期。與 strftime() 的行為相同,不同的是返回時間是格林威治標準時(GMT
)。
strftime(format,timestamp)
format 可選。規定如何返回結果。
timestamp 可選。
例子:
<?phpecho(strftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));echo(gmstrftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));//輸出當前日期、時間和時區echo(gmstrftime("It is %a on %b %d, %Y, %X time zone: %Z",time()));?>
顯示:
Dec 31 1998 20:00:00Dec 31 1998 19:00:00It is Wed on Jan 25, 2006, 11:32:10 time zone: W. Europe Standard Time
十:
idate() 函數將本地時間/日期格式化為整數。
與 date() 不同,idate() 只接受一個字元作為 format 參數。
strftime(format,timestamp)
format 可選。規定如何返回結果。
B Swatch Beat/Internet Time
d 月份中的第幾天
h 小時(12 小時格式)
H 小時(24 小時格式)
i 分鐘
I 如果啟用夏時制則返回 1,否則返回 0
L 如果是閏年則返回 1,否則返回 0
m 月份的數字
s 秒數
t 本月的總天數
U 自 Unix 紀元(January 1 1970 00:00:00 GMT)起的秒數――這和 time() 作用相同
w 星期中的第幾天(星期天是 0)
W ISO-8601 格式年份中的第幾個星期,每星期從星期一開始
y 年份(1 或 2 位元字――見下面說明)
Y 年份(4 位元字)
z 年份中的第幾天
Z 以秒為單位的時區位移量
timestamp 可選。預設值為本地目前時間,即 time() 的值。
例子:
<?phpecho(idate("Y"));?>
顯示
2009
十一:
localtime() 函數返回本地時間(一個數組)。
localtime(timestamp,is_associative)參數 描述
timestamp 可選。規定被格式化的日期或時間。若未規定 timestamp,則使用當前的本地時間。
is_associative 可選。規定返回索引數組還是關聯陣列。
localtime() 的第一個參數是時間戳記,如果沒有給出則使用從 time() 返回的目前時間。
第二個參數是 is_associative,如果設為 false 或未提供則返回的是普通的數字索引數組。如果該參數設為 true 則 localtime() 函數返
回一個關聯陣列。
關聯陣列中不同的鍵名是:
"tm_sec" - 秒數
"tm_min" - 分鐘數
"tm_hour" - 小時
"tm_mday" - 月份中的第幾日
"tm_mon" - 年份中的第幾個月,從 0 開始表示一月
"tm_year" - 年份,從 1900 開始
"tm_wday" - 星期中的第幾天
"tm_yday" - 一年中的第幾天
"tm_isdst" - 夏令時當前是否生效
注釋:月份從 0(一月)到 11(十二月),星期數從 0(星期天)到 6(星期六)。
例子:
<?php$localtime = localtime();$localtime_assoc = localtime(time(), true);print_r($localtime);print_r($localtime_assoc);?>
顯示:
Array( [0] => 24 [1] => 3 [2] => 19 [3] => 3 [4] => 3 [5] => 105 [6] => 0 [7] => 92 [9] => 1)
十一:
microtime() 函數返回當前 Unix 時間戳記和微秒數。
microtime(get_as_float)
get_as_float 如果給出了 get_as_float 參數並且其值等價於 TRUE,該函數將返回一個浮點數。
如果調用時不帶選擇性參數,本函數以 "msec sec" 的格式返回一個字串,其中 sec 是自 Unix 紀元(0:00:00 January 1, 1970 GMT)起到
現在的秒數,msec 是微秒部分。字串的兩部分都是以秒為單位返回的。
例子:
<?phpecho(microtime());?>
顯示:
0.25139300 1138197510
十二:
strptime() 函數解析由 strftime() 產生的日期/時間。
strptime(date,format)
date 要解析的字串(例如從 strftime() 返回的)。
format date 所使用的格式(與 strftime() 中所使用的相同)。
strptime() 返回一個將 date 解析後的數組,如果出錯返回 FALSE。
月份和星期幾的名字以及其它與語種有關的字串對應於 setlocale()設定的目前範圍(LC_TIME)。
數組中包含以下單元:
鍵名 說明
tm_sec 當前分鐘內的秒數(0-61)
tm_min 當前小時內的分鐘數(0-59)
tm_hour 午夜起的小時數(0-23)
tm_mday 月份中的第幾天(1-31)
tm_mon 自一月起過了幾個月(0-11)
tm_year 自 1900 年起過了幾年
tm_wday 自星期天起過了幾天(0-6)
tm_yday 本年自一月一日起過了多少天(0-365)
unparsed date 中未能通過指定的 format 識別的部分
例子:
<php$format="%d/%m/%Y %H:%M:%S";$strf=strftime($format);echo("$strf");print_r(strptime($strf,$format));?>
顯示:
03/10/2005 13:23:44Array([tm_sec] => 44[tm_min] => 23[tm_hour] => 13[tm_mday] => 3[tm_mon] => 9[tm_year] => 105[tm_wday] => 0[tm_yday] => 276[unparsed] =>)
十三:
date_sunrise() 函數返回指定的日期與地點的日出時間。
date_sunrise(timestamp,format,latitude,longitude,zenith,gmt_offset)
date_sunset() 函數返回指定的日期與地點的日落時間。
date_sunset(timestamp,format,latitude,longitude,zenith,gmt_offset)
1timestamp 必需。
2format 可選。規定如何返回結果:
SUNFUNCS_RET_STRING (以 string 格式返回結果,比如 16:46)
SUNFUNCS_RET_DOUBLE (以 float 格式返回結果,比如 16.78243132)
SUNFUNCS_RET_TIMESTAMP (以 integer 格式(時間戳記)返回結果,比如 1095034606)
3latitude 可選。規定地點的緯度。預設是指北緯。因此如果要指定南緯,必須傳遞一個負值。
4longitude 可選。規定地點的經度。預設是指東經。因此如果要指定西經,必須傳遞一個負值。
5zenith 可選。
6gmt_offset 可選。規定 GMT 與本地時間的差值。單位是小時。
例子1:
<?php//計算葡萄牙裡斯本的日出時間//Latitude: 北緯 38.4 度//Longitude: 西經 9 度//Zenith ~= 90//offset: +1 GMTecho("Date: " . date("D M d Y") . "<br />");echo("Sunrise time: ");echo(date_sunrise(time(),SUNFUNCS_RET_STRING,38.4,-9,90,1));?>
顯示
Date: Tue Jan 24 2006Sunrise time: 08:52
例子2 :
<?php//計算葡萄牙裡斯本的日落時間//Latitude: 北緯 38.4 度//Longitude: 西經 9 度//Zenith ~= 90//offset: +1 GMTecho("Date: " . date("D M d Y") . "<br />");echo("Sunrise time: ");echo(date_sunset(time(),SUNFUNCS_RET_STRING,38.4,-9,90,1));?>
顯示
Date: Tue Jan 24 2006Sunrise time: 18:44
十四:
strtotime() 函數將任何英文文本的日期時間描述解析為 Unix 時間戳記。
strtotime(time,now)
time 規定要解析的時間字串。
now 用來計算傳回值的時間戳記。如果省略該參數,則使用目前時間。
該函數預期接受一個包含美國英語日期格式的字串並嘗試將其解析為 Unix 時間戳記(自 January 1 1970 00:00:00 GMT 起的秒數),其值
相對於 now 參數給出的時間,如果沒有提供此參數,則用系統目前時間。
該函數將使用 TZ 環境變數(如果有的話)來計算時間戳記。自 PHP 5.1.0 起有更容易的方法來定義時區用於所有的日期/時間函數。此過程
在 date_default_timezone_get() 函數頁面中有說明。
例子:
<?phpecho(strtotime("now"));echo(strtotime("3 October 2005"));echo(strtotime("+5 hours"));echo(strtotime("+1 week"));echo(strtotime("+1 week 3 days 7 hours 5 seconds"));echo(strtotime("next Monday"));echo(strtotime("last Sunday"));?>
顯示:
1138614504112829040011386325041139219304113950370911391804001138489200