PHP – 时间函数
Table of Contents
时区
/etc/php.ini
date.timezone = Asia/Shanghai
date_default_timezone_set(‘Asia/Shanghai);
setlocale(LC_TIME, "C"); echo strftime("%Y-%m-%d: %T"), ‘<br>‘;
date 的时间格式
年:
Y: 4 位数 y: 2 位数
月:
F January 到 December m 01 到 12 n 1 到 12 M Jan 到 Dec
日:
d 01 到 31 j 1 到 31
星期
D Mon 到 Sun j 1 到 31 l Sunday 到 Saturday N 1 到 7 w 0 (表示星期天) 到 6
小时:
h 无前导 0 的 24 小时 H 有前导 0 的 24 小时 g 无前导 0 的 12 小时 G 有前导 0 的 12 小时 a am, pm A AM, PM
分钟:
i 有前导 0
秒:
s 有前导 0
毫秒:
u 毫秒数
time
时间是 1970-01-01 00:00:00 到现在经过的秒数
time() # 单位是 s microtime() # 单位是 s microtime(1) # 单位是 ms
date
echo date(‘Y-m-d H:i:s‘);
echo date(‘Y-m-d H:i:s‘, time());
echo date(‘Y-m-d H:i:s‘, filectime($file));
mktime
mktime (H, i, s, m, d, Y)
mktime(14, 23, 23, 07, 08, 1995)
echo date(‘Y-m-d H:i:s‘, mktime(0, 0, 0, 1, 1, 1970));
strftime
年:
%Y 4 位 %y 2 位
月:
%b 简写 %B 全写 %m 00~12
日:
%d 01 到 31 %e 1 到 31
星期
%a 简写 %A 全写 %u 1 到 7 %w 0 到 6
小时:
%H 00 ~ 23 %I 01 ~ 12 %l 1 ~ 12 %P AM, PM %p am, pm
分钟:
%M 00 ~ 59
秒:
%S 00 ~ 59
简写:
%F 2009-04-05 %T 23:34:59
strftime
通常跟 setlocale
一起用
setlocale
LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY monetary: 货币 LC_NUMERIC LC_TIME
setlocale (LC_ALL, ‘zh_CN.utf8‘); echo strftime (‘%F %T‘); echo strftime (‘%F %T‘, time());
strtotime
strtotime (‘1 days‘); strtotime (‘1 day‘);
strtotime (‘+45 days‘); strtotime (‘-45 days‘);
strtotime (‘-4 weeks‘); strtotime (‘-4 week‘);
strtotime (‘4 weeks 2 days‘); strtotime (‘-4 weeks -2 days‘);
DateTime
$raw = ‘22. 11. 1968. 16. 52. 38‘; $start = DateTime::createFromFormat(‘d. m. Y. H. i. s‘, $raw); echo ‘Start date: ‘ . $start->format(‘Y-m-d H:i:s‘) . "<br>"; $start->setDate(2015, 8, 4); $start->setTime(19, 20, 00); echo ‘Current date: ‘ . $start->format(‘Y-m-d H:i:s‘) . "<br>"; $start->modify("+1days +24hours"); echo ‘Current date: ‘ . $start->format(‘Y-m-d H:i:s‘) . "<br>";
DateInterval
$time1 = DateTime::createFromFormat(‘Y-m-d H:i:s‘, ‘2015-08-10 12:00:20‘); // $time1 = DateTime::createFromFormat(‘Y-m-d H:i:s‘, ‘2015-08-10 12:0:20‘); // 报错 echo $time1->format(‘Y-m-d H:i:s‘), ‘<br>‘; $time2 = DateTime::createFromFormat(‘Y-m-d H:i:s‘, ‘2017-09-10 22:10:30‘); echo $time2->format(‘Y-m-d H:i:s‘), ‘<br>‘; $span = $time2->diff($time1); // time2 - time1 echo $span->format(‘%R‘); echo $span->format(‘%Y-%M-%D: ‘); echo $span->format(‘%H:%I:%S‘); // -02-01-00: 10:10:10 $span = $time1->diff($time2); // time1 - time2 echo $span->format(‘%R‘); echo $span->format(‘%Y-%M-%D: ‘); echo $span->format(‘%H:%I:%S‘); // -02-01-00: 10:10:10 // Y 表示有前导零 // R "-" when negative, "+" when positive -, + // r "-" when negative, empty when positive -,