php日期与时间函数库
checkdate : 验证日期的正确性。 8 z5 ]# k* h& ]! R
date : 将服务器的时间格式化。 7 `& C+ ^7 n7 w! Y
strftime : 将服务器的时间本地格式化。
2 p$ Y' O& U5 A+ F& J0 f& p4 b/ f) zgetdate : 获得时间及日期信息。
& Z& c1 K. M( j& q$ X3 Jgettimeofday : 取得目前时间。 " z- S. p& n; E, c% P' O
gmdate : 取得目前与 gmt 差后的时间。
) d7 b) J$ ]" e) @8 J& [easter_date : 计算复活节日期。 " A3 c/ {, {# u
easter_days : 计算复活节与三月廿一日之间日期数。 ' }# C5 G2 E3 [$ S+ v# n! [
mktime : 取得 unix 时间戳记。 % I2 J/ R! X/ c) o, P
gmmktime : 取得 unix 时间戳记的格林威治时间。
! k. L- }7 T7 o: Ktime : 取得目前时间的 unix 时间戳记。 * Z4 l& [! Z- { ?. z/ E
microtime : 取得目前时间的 unix 时间戳记的百万分之一秒值 & N# l; [8 }$ N0 l. _( M) z: A- Z
3 {3 O( ?) | T( @2 q4 D
) @$ }# X, y& T+ [' T7 m- f5 K% ?
checkdate
" T# R; I) ]* w7 i& Z- X+ R% i验证日期的正确性。
( h( p2 O6 n6 W; H1 ?- }& S语法: int checkdate(int month, int day, int year);1 E. _4 ?: t; Z+ I, K# {
返回值: 整数5 h S8 u" I, f8 R/ U% ?% {
函数种类: 时间日期; H, D" }$ y+ r6 m) v
内容说明 若日期是有效的则返回 true,若日期有问题,则返回 false。本函数可以用来检查日期是否有效。有效范围如下:! N8 Y& v2 m6 ?+ j. T4 r9 p! E
年 为 0 至 32767 年) |4 H+ t* S4 d8 @% {4 O: q
月 为 1 至 12 月
# S. ]9 b: n0 ~- z! w/ w3 G) m; B日 则随着月份及闰年变化5 @; [) i% C' j! j4 Z
$ Q9 P; y9 L; S' G( q. r
date
6 y) e. }# c+ K0 p/ r+ X将服务器的时间格式化。0 Q, M) R# H+ X) I2 K& n6 @
语法: string date(string format, int [timestamp]);
; G" J; l. G3 S- A- C, ~返回值: 字符串
; V- J: r+ |/ Z4 b* `函数种类: 时间日期) U2 t+ d: Q B) U1 L1 t% s I
内容说明 返回值的?字符串依配置的格式来决定。若有传入时间戳记值,则将时间戳记格式化返回;若无传入时间戳记值,则将目前服务器的时间格式化返回。要将日期转为其它的语系格式,应使用setlocale() 及 strftime() 二个函数。字符串格式化的选项如下:
1 F9 x# A3 ^, x+ |6 U$ X5 ~( ?a - "am" 或是 "pm"
2 Z P% L' X7 e9 `# la - "am" 或是 "pm"
O7 E! u- W3 Md - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31" / _5 c& A7 ?. F6 |" m5 k/ X
d - 星期几,三个英文字母; 如: "fri"
6 D2 T! r7 L; |f - 月份,英文全名; 如: "january"
/ {" C# t( _7 o, X* c. k; d+ gh - 12 小时制的小时; 如: "01" 至 "12" ) r. S2 J- @# P2 Y1 l7 e: K. K1 \
h - 24 小时制的小时; 如: "00" 至 "23" & \! V+ |' [5 a1 ]) S; W" P6 P$ B4 t
g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12"
; H* v9 i5 x- O& n4 f3 sg - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23"
+ x8 I" \9 }6 v# K! O( si - 分钟; 如: "00" 至 "59" - R O& H! M0 h2 C
j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31" 4 h, k9 v. t+ {/ x4 W
l - 星期几,英文全名; 如: "friday" 6 v+ m. _" }- k8 Z8 S- f f
m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12"
% |9 a1 E2 u# n' |/ u- t& V. D6 l4 in - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12" 4 q, [3 F! w' g4 E9 |0 t
m - 月份,三个英文字母; 如: "jan" & s6 P4 n, e2 d5 b& ?' s
s - 秒; 如: "00" 至 "59" ) L! Y, n% ]# e: d( L. V8 }* \5 a
s - 字尾加英文序数,二个英文字母; 如: "th","nd" , h: z. J* C! }* N' r! x
t - 指定月份的天数; 如: "28" 至 "31" 8 E4 A' t" ` S+ G) z4 n
u - 总秒数
" c" v( a/ Q. @/ i" z) j# Zw - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六) $ J/ v- `" b# ~$ M) q* @; B
y - 年,四位数字; 如: "1999" $ ~, S3 ~5 Y. u% b8 Z
y - 年,二位数字; 如: "99"
+ D# c5 `2 Q, u9 I" [z - 一年中的第几天; 如: "0" 至 "365" ~5 n3 s; @5 y3 w0 V
其它不在上列的字符则直接列出该字符。
+ K# p+ x2 n ?" L3 b+ H1 C# Y h# B4 X: C: _+ ]
使用范例
+ r+ z/ U! G1 J/ H8 {/ f# ^范例一:
; @! b. g# h8 v. {( K) [: ~. Tprint(date( "l ds of f y h:i:s a" ));) H( j! t& x9 d4 x) a/ F
print("july 1, 2000 is on a " . date("l", mktime(0,0,0,7,1,2000)));6 A4 q r9 {( T
?>9 A2 M" w& G* ]4 j' C
* G# T% C/ ]7 l( x" h$ D; Z" o. v
范例二:$ x, w0 L2 d1 p- x; [& M
$tomorrow = mktime(0,0,0,date("m") ,date("d")+1,date("y"));
0 ]. a. T8 |( A% P5 Y$ H$lastmonth = mktime(0,0,0,date("m")-1,date("d"), date("y"));0 @# a/ N" v" y( U; E' D
$nextyear = mktime(0,0,0,date("m"), date("d", date("y")+1);
* E' [* _* t4 M1 C, \/ d?>- m) ]- V9 g/ I! ]
9 F2 P9 m4 n' v5 } D6 z; W- N
参考 gmdate() mktime() ' v6 y! C' T: o5 c
7 a6 c- E: t& sstrftime% f* ~) S' M9 U: E+ G
将服务器的时间本地格式化。: }# O" \$ ^4 t: Q4 [1 o2 w1 P
语法: string strftime(string format, int [timestamp]);! J" L3 i" p) }3 ?) h: v
返回值: 字符串
5 x# ^6 A+ Y4 n1 o% w# Q I: t函数种类: 时间日期
+ W! ]& U( B. a: ]4 T0 W s$ a- V内容说明 返回值的字符串依配置的格式来决定。若有传入时间戳记值,则将时间戳记格式化返回;若无传入时间戳记值,则将目前服务器的时间本地格式化返回。月份或者星期名称随着本地语系配置 setlocale() 的不同而改变。8 r/ H0 n' g: ?% q# ]
4 I4 K; U+ _- T0 j返回的字符串可以依下列的格式而定:9 e; ]& Z- ~/ Q* C) x5 m" z) E3 G
%a 星期几的缩写。
3 H- `/ A) K$ g& G0 g%a 星期几的全名。 * i$ e, Q( G7 D4 G+ H
%b 月份名称的缩写。 ! ]6 G2 ?' u( S8 h$ ]; ]# B
%b 月份名称的全名。 5 J/ ?" A; e0 q
%c 本地端日期时间较佳表示字符串。 ' l( B8 Z% R# Z- F, s4 }4 W/ V2 G' A
%d 用数字表示本月的第几天 (范围为 00 至 31)。
- ~- F2 l/ i' W; N4 g$ P& i%h 用 24 小时制数字表示小时数 (范围为 00 至 23)。 2 M( b9 _, G' M# d; \
%i 用 12 小时制数字表示小时数 (范围为 01 至 12)。 5 O5 v" @% G0 m( x$ X/ g
%j 以数字表示当年度的第几天 (范围为 001 至 366)。
* a; Q5 v& K. G9 u2 Z- V* {%m 月份的数字 (范围由 1 至 12)。
% [: r. p8 Y3 h9 d3 q%m 分钟。 9 E$ }; \" \; B
%p 以 ''am'' 或 ''pm'' 表示本地端时间。 , g& C) ^( D* F
%s 秒数。 6 Z( a0 c: ]& p4 s$ h) `
%u 数字表示为本年度的第几周,第一个星期由第一个周日开始。
$ Y& d. r+ @5 Q) j9 D4 _% V%w 数字表示为本年度的第几周,第一个星期由第一个周一开始。 . ?' f" H- ~3 ]0 B
%w 用数字表示本周的第几天 ( 0 为周日)。
1 G X+ ?6 m) A$ J* t%x 不含时间的日期表示法。
- A: I: _' O& d" d2 t- @. l }%x 不含日期的时间表示法。 - P) |; g/ g- Z! Y7 \ K- S: i$ w
%y 二位数字表示年份 (范围由 00 至 99)。 2 K: `& u) W2 I, O# {
%y 完整的年份数字表示,即四位数。 ; p- W! O. M: W% n# Y: W& G
%z 时区或名称缩写。 1 x- V5 R# Q( ?! ^4 y4 P% c
%% % 字符。
" k. Q- H2 m6 \
# ]$ Y, X0 ]1 q# W1 [使用范例 , ]3 E t1 E' Z l( \% D
setlocale ("lc_time", "c");* K* x" b* \- x4 M$ I
print(strftime("%a in finnish is "));
4 {0 n2 {* Z3 {5 k+ D$ `) rsetlocale ("lc_time", "fi");
( C* S2 V5 n! }. N3 |2 i5 [print(strftime("%a, in french "));
8 }6 Z5 m- {3 V5 ~setlocale ("lc_time", "fr");! ^1 ?0 E4 A1 b3 d# y
print(strftime("%a and in german "));% C% m" F& y y. l" S
setlocale ("lc_time", "de");
+ F/ v d. R# P" L: K! nprint(strftime("%a.n"));' j0 F; n- U& @, j3 M: V
?>, p# W* n, o/ t
* e0 T4 {6 b8 [. Q2 r. q8 _6 w' c
参考 setlocale() mktime()
# h* m, [) C$ s
3 v1 m, R" r+ `getdate* ]; m; k4 @$ L8 U' B% L
获得时间及日期信息。% a* m1 d. |( D5 N% \! l
语法: array getdate(int timestamp);
|: S9 g+ B: f0 E4 J9 Z+ W返回值: 数组+ _2 d" r" y0 g
函数种类: 时间日期
O8 j4 h C e1 I% d9 }内容说明 返回数组的元素包括下列的项目:# b7 p* n1 u0 I" D0 e
"seconds" - 秒
5 f; s3 H# Y w: p* l"minutes" - 分
5 K0 U* i/ A; ~"hours" - 时 ' }2 y b$ I' O) W, Y1 f6 d, L
"mday" - 当月的第几天 , T) l- n* o/ b: ^; d3 b$ H- e& k. U
"wday" - 当周的第几天数字
) p( }' K6 I( B" T% d* R* H6 b7 b5 j"mon" - 月份数字
* {4 F, L3 J( E+ n% G"year" - 年,数字 ( m5 H3 K" u% I1 X
"yday" - 当年的第几天数字; 如: "299" - u& }" ^/ ^" _# |" b
"weekday" - 星期几全名; 如: "friday" ! X0 ?' w8 ~3 l6 R. a. J
"month" - 月份全名; 如: "january"
, }: U ]# [- c0 i
3 ~$ c. u- [6 H P1 i/ }gettimeofday: _/ e) K9 k/ z2 K
取得目前时间。
* Z% V6 z. M7 [: u语法: array gettimeofday(void);
6 Q' b" }& i( y g2 w/ e. ]返回值: 数组
& g# R3 U8 N4 k$ O! m4 w$ p1 t函数种类: 时间日期
$ ]" d* O5 {! q( Y3 @ i8 Z+ g0 _内容说明 返回数组的元素包括下列的项目:3 C5 }7 ~, e2 s* N/ k/ x M
"sec" - 秒
& A, t$ `5 ?3 y0 D. c6 c"usec" - 百万分之一秒 : t0 ~/ w+ \; j$ ?& F# {
"minuteswest" - 格林威治时间的分
! `) T' L* u# M/ f& N4 B, D"dsttime" - 目的的时区 8 n8 A3 ?' z3 w* I' J1 i
' F& u/ I& b6 a& w( m/ |! Mgmdate
( s% C2 ]9 l; I7 E. K/ H3 @取得目前与 gmt 差后的时间。0 u: m' L1 O, h3 p- y, L2 L
语法: string gmdate(string format, int timestamp);
# o8 v/ b8 p8 W/ ~- q& }返回值: 字符串
. ?8 Y$ z. ~9 e2 l, H函数种类: 时间日期4 N$ T* Z# k- [ n4 o# C
内容说明 本函数与 date() 函数相似,不同的是本函数返回与格林威治标准时间 (greenwich mean time, gmt) 时间差后的时间* H2 W" p- {8 K6 B
: o' o; H; W* Y# P8 O使用范例 ) H" h$ @5 n. A8 Y: v5 k- Z
echo date( "m d y h:i:s",mktime(0,0,0,1,1,1998) );
( b, a# i, y! B7 A% Fecho gmdate( "m d y h:i:s",mktime(0,0,0,1,1,1998) );
: h" ]- ?+ I8 @7 u9 {1 P$ v?>
8 ]8 o$ V4 c4 [" q* y若执行本范例的机器在芬兰 (finland, gmt +0200),返回的结果为:8 y+ m2 M+ p3 |3 L+ t1 a9 ~ h
jan 01 1998 00:00:00, R2 h) \" F3 c3 N3 X9 y
dec 31 1997 22:00:00# D, ? [9 U' Q i
参考 date() mktime() gmmktime(): t% l+ ^( X& q
, o1 o; c1 j* e' e& x S+ seaster_date
* ^* C K. |' N+ \# ?% J计算复活节日期。5 w( t+ w2 E4 @. C4 |# Y. Y
语法: int easter_date(int [year]);
5 X' E! r, ^3 J2 U8 i( p, L返回值: 整数/ q$ c/ P) F+ h; C
函数种类: 时间日期
6 T, @' |. _; z' N7 j0 B. ]内容说明
8 {$ Q! b* {' s) S, E输入某一年份,则以 unix 时间戳记的格式返回该年的复活节日期,若没有输入年份,则计算当年的日期。值的?注意的是输入的年份必需在公元 1970 至 2037 年之间,否则无法计算。
8 t: C( v& e( Q3 w4 g使用范例
. x X( t9 h) secho date("m-d-y", easter_date(1999));
! ~+ B. P" K/ C$ V& b4 E: t5 ?echo date("m-d-y", easter_date(2000));, c' i& s% H! w1 O# n
echo date("m-d-y", easter_date(2001));
+ G- O: {2 P# g+ f?>
+ C6 u+ R4 _' p( \返回结果为6 n+ p$ d! j$ \. M! k
apr-04-1999
. o7 m% f/ J% L+ X" s2 Kapr-23-2000
; ?% l; @ @, `+ P# B* `* Napr-15-2001 6 ]! }. P4 \) X9 k
' ]$ q0 M; Q; n3 j8 feaster_days
+ `4 b" ?" d) y* v1 W6 h% e- q计算复活节与三月廿一日之间日期数。- h* R- f/ t c5 _% Y
语法: int easter_days(int [year]);
0 {& H( t) g$ e" A3 o返回值: 整数5 K0 \$ p. G7 L" B9 [
函数种类: 时间日期- f' _( I) R2 N
内容说明 输入某一年份,则以计算该年复活节与三月二十一日之间的日期数,若没有输入年份,则以当年计算。这个函数可以用来替代 easter_date() 1970-2037 年外范围无法计算的问题。$ z9 p% M* _% w/ U5 R# m& a2 {
使用范例 $ h: k- y" F; O Z8 ~8 B, P
echo easter_days(1999);
" u3 n+ P( t; z* o1 Y0 \, Qecho easter_days(1492);( W5 I3 Q r: t2 z& R) o; ?
echo easter_days(1913);- J, Q) t8 V# J! l
?>
' g8 o; D" r5 S1 V1 T* b返回结果为:: ]+ S+ W$ W: X+ I# k- c7 J
14 (4/4)
7 E' d" ]# |- B1 ^1 o32 (4/22)
& L% v9 p+ H8 V% R8 y( P5 D2 (3/23): |; `$ x. C6 s+ K
参考 easter_date()
' B$ E6 [: I5 E; k! P$ @
* Z* s L# F3 d1 l$ I, umktime
: ^; q/ [9 y, y! L取得 unix 时间戳记。
6 P! n" D' T, [1 l# g2 Z1 U语法: int mktime(int hour, int minute, int second, int month, int day, int year);
! ^- B: M$ n& q3 l2 _7 T返回值: 整数
. ^4 W% W4 ~& D% G3 a3 T; z函数种类: 时间日期 ) V% Q0 ~) D. j, ^* g% d5 n, ]
内容说明 # ]; |$ V1 w# C, {0 A* o
输入一个时间,则返回 unix 时间戳记的长整数。5 ^' l. Z j. K5 {9 Y( a" }
使用范例 7 ^! I! q7 |3 v, u. F" E8 N. b2 [& a
echo date( "m-d-y", mktime(0,0,0,12,32,1997) );
8 L4 q, a& @8 F) Cecho date( "m-d-y", mktime(0,0,0,13,1,1997) );4 Z4 K( c6 U6 N( ?
echo date( "m-d-y", mktime(0,0,0,1,1,1998) );6 r. `/ ^3 \" u8 v% T3 E; [
?> , W" v1 P; v* I0 g$ H; S# ]
参考 date() time()
6 _) o7 e6 Z2 x$ {6 W4 Y
% a" c% n# S1 T. J8 Sgmmktime9 ? T" A, L L# N9 S# D* ~7 n* k
取得 unix 时间戳记的格林威治时间。8 X" o3 i: H/ d- ?
语法: int gmmktime(int hour, int minute, int second, int month, int day, int year);8 K& \4 G6 j& G' S$ T
返回值: 整数) Z, f* _8 T5 M% m2 F$ H
函数种类: 时间日期
+ ]. }) n j; P7 G% Z内容说明 输入一个时间,则返回 unix 的格林威治时间戳记的长整数。+ ~( e/ T- V4 ^; y
1 i1 @0 L$ f% |, d6 z. v/ O
time
0 H5 M7 x8 ~5 G% b取得目前时间的 unix 时间戳记。! C# B3 H- o, L& Z4 E5 d4 ^( B1 i
语法: int time(void);
* y$ T4 V8 e9 F返回值: 整数
! P. E3 } A8 G: Y0 t1 F. a函数种类: 时间日期& w3 ?" N5 B0 |6 A
内容说明 返回目前时间的戳记值。
' h. a+ y# S1 ^6 e, \/ z4 f0 k4 [# y! E$ `: x
参考 date()
3 ]7 w. G A. R5 i
$ n! t! o Y8 _/ |0 tmicrotime
H0 P( p' G) U1 i1 g" s z C取得目前时间的 unix 时间戳记的百万分之一秒值。
$ y2 ^: M& V2 S! [6 @( _7 \语法: string microtime(void);
# Z6 I% g+ ~% u' x* J返回值: 字符串
. ?% Q6 F* {; O) u函数种类: 时间日期- M/ b- x# i) ?* [
内容说明 返回目前时间的百万分之一秒戳记值。若操作系统没有提供 gettimeofday() 的系统呼叫函数,则本函数亦无效。