[Zend权威认证试题讲解]第七章 - 管理日期与时间
从某一点上来看,几乎所有的网站都需要处理日期与时间。假如你需要收集用户的生日,或者记录某个特定事件的发生时间,PHP的日期函数将很好的帮助你完成任务。但是PHP的日期/时间管理功能并不完美。它基于UNIX时间戳运行,容易受到攻击,作为开发者,你必须谨慎处理可能遇到的恶意数据。^2u`4i~
同时,在Web上进行日期管理是一件国际性的事务。你必须能依据时区、地区的不同来显示对应的日期信息。)pEbad l
本章测试题将考察以上所述的全部内容。
$uAc+nw(JITCR
0Ii?3O*w"i
问题-YIq%HAa6s lFDJ
1~)L5])W(u
1.以下脚本在Windows系统上输出什么?[code] J,u0^L o!_+m
<?php
echo strtotime ("November 11, 1952");6zY+J6L \ I!W3K8u
?>[/code]A.-14462
B.14462
C.-1m|2I+u-QHM
D.0vu!H2]s(o1DhL
E.一个错误v9A6K+l$b8Y.H
+w4Yt*}n7O
2.哪个函数能根据区域设置来格式化输出一个时间戳?
答案:__________
3.以下脚本是做什么的?[code]
<?phpxC*hE(eHo
$a = array_sum (explode (' ', microtime()));
for ($i = 0; $i < 10000; $i++);(w+|%@jUH~fq/HY
$b = array_sum (explode (' ', microtime()));
echo $b - $a;S2ym1R'IMf-?
?>[/code]A.测算for循环的执行时间 ];d/V/z,n&|)e&O
B.测定服务器的时钟频率
C.计算操作系统的硬件时钟频率与软件时钟频率的差%~U7z JG8ah!h
D.测算for循环、一个array_sum()函数与一个microtime()的总执行时间
E.测算for循环、两个array_sum()函数与两个microtime()的总执行时间
i1J HI%e0[ j6y
4.以下脚本的标记处应该填入什么函数?[code] 9Gk{"plqQ @_
<?php }D2_$i(k r%C%w a
for ($i = 0; $i < 100; $i++) {
$day = rand (1, 31);
$month = rand (1, 12);
$year = rand (1000, 2500);Ca0|Zb z
if (????????? ($month, $day, $year)) {
echo "$month/$day/$year is a valid date\n";
} else {(p`/d t$Z6Aw%f
echo "$month/$day/$year is not a valid date\n";,ni8E3k ^8De6z
}
}
?>[/code]A.date()
B.strftime()oKvj&nq/\F,B3bb e
C.microtime()P+x1[XeF%O/Sy
D.checkdate()7eN-G-O c+d/x
E.mktime().a;R0TS/Qkd4| M
n2]$Z"sU/f
5.以下脚本在Windows系统中输出什么?[code] "]N:d,Eg+K^;g)J
<?php-J/E$W6U+L'@/R~ P
echo mktime (0, 0, 0, 11, 11, 1952); // November 11, 1952(x9V ObmwX:d1J.U
?>[/code]A.一个警告
B.一个错误
C.-1和一个警告r emu8ov/e3sk
D.-14462x;payv.S%a
E.一个提示,指出mktime不支持种输入]@H cx)fx:d8\
m `$fO!Npz
t&x7^vXQ`
6.EST是CST之前的一个时区(就是说任何时候EST都比CST晚一个小时)。那么以下脚本输出什么?[code] ;uQ tB,Pqx }
<?php
$a = strtotime ('00:00:00 Feb 23 1976 EST');9b IL(| Q5O7h8_
$b = strtotime ('00:00:00 Feb 23 1976 CST');.m CVs(k+o
echo $a - $b;wt:m8{4_2T"A"d xIr ]
?>[/code]A.-3600 ebl$ua C
B.3600Qk7B#}4g2jP&P9u_
C.0
D.-12x*Y-Eo H
E.11DW4ZaM/~%@ [.x
7.处理数据库中读取的日期数据时,以下那种方法有助于避免bug?(三选)Wq AVN Y
f3L;^XeF
A.确保日期数据与服务器使用相同的时区
B.如果日期需要被转换成UNIX时间戳进行操作,要确保结果不会溢出Ow-B]8zdNv
C.用数据库功能测试日期的合法性 lurEIKN)`VL
D.如果可能,用数据库功能计算日期的值
E.用代码控制日期只能在PHP中进行处理
J h+G@ PDO*Xx
8.在时区设置为Moscow, Russia的Windows操作系统上运行以下脚本,将输出什么?[code]
<?php
echo gmmktime(0, 0, 0, 1, 1, 1970);-Fr2}1L*y%Rn:X
?>[/code]A.输出数字0
B.输出数字-1e0z| A%`S$]%h
C.输出数字1M!a @_/W%el
D.报错
E.什么都不输出
#R?r"}7W@/x!t5g
9.以下哪个选项对time函数的描述最准确?q5IvvN@$e1r%t
];o[l/e
A.返回从UNIX纪元开始到现在经过的秒数Db#o"gwq
B.以GMT时区为基准,返回从UNIX纪元开始到现在经过的秒数
C.以本地时区为基准,返回从UNIX纪元开始到现在经过的秒数7WOFV,Zv(@3~
D.计算从UNIX纪元开始经过的时间,并以整型数字表示
E.以上都对
fe-f#S~d J
10.以下脚本输出什么?[code]
<?php!v%E Bej;H%l
$time = strtotime ('2004/01/01');
echo date ('H:\i:s', $time);
?>[/code]A.00:00:00m%R`5ae)YMb8O
B.12:00:00
C.00:i:00/v-b!sI+R
D.12:i:00
E.-1r4h CU9v7Y/z_
11.以下哪个表达式能让cookie在一小时后过期(假设客户端的时间和时区设置都正确,并且客户端与服务器不在同一个时区)?
A.time() + 3600
B.time(3600)~Q9b'Tu%nP s\u
C.gmtime() + 3600
D.gmtime(3600)6L(T[!W5u JEM5^
E.A和C都对EZ;~4A6lsn
-l0mIv;hp
m6XJ~\H'Dw
12.getdate()函数返回______。
G&THj \w6]uc
A.一个整数
B.一个浮点数
C.一个数组
D.一个字符串Xl!zg9y^ bv-o
E.一个布尔值
XAy;M$z
13.要把microtime()的输出转化成一个数字值,以下那种方法最简便?y R1C e9A
J hi Vz(go
A.$time = implode (' ', microtime());
B.$time = explode (' ', microtime()); $time = $time[0] + $time[1];
C.$time = microtime() + microtime();jp elUS&V
D.$time = array_sum (explode (' ', microtime()));
E.以上都不对
14.以下哪个函数返回的不是时间戳?(双选)eCA R;P }8{
8]}n$P9`
A.time()4c[&DZH*[.X
B.date()
C.strtotime()7D"NH9z&O:h$j&C U|8EM
D.localtime()
E.gmmktime()
V!y6r9RZ*I[Gu'K
15.GMT时区下的时间戳与你所在时区下的时间戳的秒数差距有多大?
A.取决于你所在时区与GMT时区的时间差(^ ~W-aq3P8lvg
B.没有差别H%f_ _)S}f
C.只当你也在GMT时区时才会相同(T.LRa;\|e$_$N
D.永远不会相同5@hd6\)_ I9k
E.以上都不对 ^,Oa7Y,BZ)Z.k6S^
U j8i YT(D,MI
J!PkdxO^ O
答案速查'sn4bS0mr
1:C
2:strftime()/[0mc$D-yeFG+v#q&K