系统时区设置
date_default_timezone_set()
设置时区,例如
<?php
date_default_timezone_set("Asiz/Hong_Kong"); // 香港时区
date_default_timezone_set("RPC"); // 北京时区
?>
日期和时间函数
time()
函数返回当前时间戳
echo time(); // 输出当前时间戳
输出:
1426083407
date()
函数返回日期,date(format, timestamp)
,若无 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”
echo date("Y-m-d H:i:s", 1426083407); // 输出时间戳对应的日期
echo "<br>";
echo date("Y-m-d H:i:s"); // 输出当前日期
输出:
2015-03-11 22:16:47
2015-03-11 22:26:26
getdate(timestamp)
返回一个包含日期时间各个部分的数组,若无参数则返回当前时间日期的数组。
$t = getdate();
echo $t['year'] . " 年 " . $t['mon'] . " 月 " . $t['mday'] . " 日 ";
echo $t['hours'] . " 时 " . $t['minutes'] . " 分 " . $t['seconds'] . " 秒 ";
输出:
2015 年 3 月 11 日 22 时 31 分 58 秒
checkdate(month, day, year)
检验日期的有效性
if(checkdate(2, 31, 2015))
echo "2 月有 31 号 ";
else
echo "2 月无 31 号 ";
输出:
2 月无 31 号
strftime(format, timestamp)
将时间戳转化为日期和时间,若无 timestamp
参数则以当前的时间戳为准
format:
%a - 当前区域星期几的简写
%A - 当前区域星期几的全称
%b - 当前区域月份的简写
%B - 当前区域月份的全称
%c - 当前区域首选的日期时间表达
%C - 世纪值(年份除以 100 后取整,范围从 00 到 99)
%d - 月份中的第几天,十进制数字(范围从 01 到 31)
%D - 和 %m/%d/%y 一样
%e - 月份中的第几天,十进制数字,一位的数字前会加上一个空格(范围从 ’ 1’ 到 ‘31’)
%g - 和 %G 一样,但是没有世纪
%G - 4 位数的年份,符合 ISO 星期数(参见 %V)。和 %V 的格式和值一样,只除了如果 ISO 星期数属于前一年或者后一年,则使用那一年。
%h - 和 %b 一样
%H - 24 小时制的十进制小时数(范围从 00 到 23)
%I - 12 小时制的十进制小时数(范围从 00 到 12)
%j - 年份中的第几天,十进制数(范围从 001 到 366)
%m - 十进制月份(范围从 01 到 12)
%M - 十进制分钟数
%n - 换行符
%p - 根据给定的时间值为 am' 或
pm’,或者当前区域设置中的相应字符串
%r - 用 a.m. 和 p.m. 符号的时间
%R - 24 小时符号的时间
%S - 十进制秒数
%t - 制表符
%T - 当前时间,和 %H:%M:%S 一样
%u - 星期几的十进制数表达 [1,7],1 表示星期一 Warning
尽管 ISO 9889:1999(当前的 C 标准)明确指出一周从星期一开始,但是 Sun Solaris 的一周似乎从星期天开始并作为 1。
%U - 本年的第几周,从第一周的第一个星期天作为第一天开始
%V - 本年第几周的 ISO 8601:1988 格式,范围从 01 到 53,第 1 周是本年第一个至少还有 4 天的星期,星期一作为每周的第一天。(用 %G 或者 %g 作为指定时间戳相应周数的年份组成。)
%W - 本年的第几周数,从第一周的第一个星期一作为第一天开始
%w - 星期中的第几天,星期天为 0
%x - 当前区域首选的时间表示法,不包括时间
%X - 当前区域首选的时间表示法,不包括日期
%y - 没有世纪数的十进制年份(范围从 00 到 99)
%Y - 包括世纪数的十进制年份
%Z 或 %z - 时区名或缩写
%% - 文字上的 ‘%’ 字符
echo strftime("%Y-%b-%d %H:%M:%S", 1426083407);
echo "<br>";
echo strftime("%Y-%b-%d %H:%M:%S");
输出:
2015-Mar-11 22:16:47
2015-Mar-11 22:41:22
setlocale(constant,location)
函数改变 PHP 本地化默认值,
constant: LC_ALL - 包括下面的所有选项 LC_COLLATE - 排序次序 LC_CTYPE - 字符类别及转换(例如所有字符大写或小写) LC_MESSAGES - 系统消息格式 LC_MONETARY - 货币格式 LC_NUMERIC - 数字格式 LC_TIME - 日期
格式
echo setlocale(LC_TIME, "zh_CN");
echo strftime("%z");
输出:
中国标准时间
mktime(hours, minutes, seconds, month, day, year)
返回对应的时间戳
echo mktime(22, 53, 20, 3, 11, 2015);
输出:
1426085600
microtime(true)
可返回微秒级时间戳。
echo microtime(true);
输出:
1426085725.4697