PHP基础 —— 日期与时间
2020-07-18 本文已影响0人
WhiteStruggle
日期与时间
PHP文档 : 日期与时间
设置时区
默认时区是UTC
文档中的 时区列表,使用时进行参照
设置时区
date_default_timezone_set ( string $timezone_identifier ) : bool
$timezone_identifier 表示要设置的时区
设定用于一个脚本中所有日期时间函数的默认时区
如果 timezone_identifier 参数无效则返回 FALSE,否则返回 TRUE。
<?php
echo date_default_timezone_set('Asia/Tbilisi');//1
?>
获取时区
date_default_timezone_get ( void ) : string
获取顺序,没有就向下一层查找:
- date_default_timezone_set()函数设置的时区
- PHP5.40之前: TZ 环境变量
- date.timezone配置选项
- PHP5.40之前:查询操作系统主机(前提系统支持并允许)
- 若都不行,会返回 UTC 的默认时区
<?php
echo date_default_timezone_get();//Asia/Shanghai
?>
//电脑默认的时区:Asia/Shanghai
获取当前Unix 是时间戳
Unix 时间戳 :
从Unix纪元(格林时间:1970年1月1日00时00分00秒),开始到当前时间的秒数
time ( void ) : int —— 返回当前的 Unix 时间戳
<?php
echo time();//1586345812 现在是时间2020.4.8-19:37
?>
获取指定时间的Unix时间戳
function mktime(
$hour = null,
$minute = null,
$second = null,
$month = null,
$day = null,
$year = null,
$is_dst = -1
) { }
mktime( $hour , $minute, $second , $month , $day , $year , $is_dst = -1);
小时数,分钟数,描述,月份,天数,年份
$is_dst —— 本参数可以设为 1,表示正处于夏时制时间(DST),0 表示不是夏时制,或者 -1(默认值)表示不知道是否是夏时制。
自 PHP 5.1.0 起,本参数已被废弃
PHP 7.0.0 起,此参数已经被移除。
mktime() 根据给出的参数返回 Unix 时间戳。如果参数非法,本函数返回 false(在 PHP 5.1 之前返回 -1)。
<?php
echo mktime(0,0,0,5,6,2000,1);//957542400
?>
从Unix时间戳切刀时间日期信息
date ( string $format ,[int $timestamp ] ) — 格式化一个本地时间/日期
$timestamp 如果没有给出时间戳则使用本地当前时间,是可选的,默认值为 time()。
返回值:string
format字符 | 说明 | 返回值 |
---|---|---|
d | 月份的第几天,有前导零 | 01到31 |
j | 月份的第几天,没有前导零 | 1到31 |
l(L的小写) | 星期几,完整英文格式 | sunday到Saturday |
D | 星期的第几天,文本,3个字母 | Mon到Sun |
w | 星期中的第几天,数字表示 | 0(星期日)到6(星期六) |
N | ISO-8601 格式数字表示的星期中的第几天 | 1(星期一)到 7 (星期日) |
S | 每月天数后面的英文后缀,2个字符 | st,nd,rd 或者 th |
z | 年份中的第几天 | 0 到 365 |
<?php
echo date("d")."<br>";//08 —— 8号
echo date("j")."<br>";//8 —— 8号
echo date("l")."<br>";//Wednesday —— 星期三
echo date("D")."<br>";//Wed —— 星期三
echo date("w")."<br>";//3 —— 星期三
echo date("N")."<br>";//3 —— 星期三
echo date("S")."<br>";//th
echo date("z")."<br>";//98 —— 全年的第98天
?>
月 | -- | -- |
---|---|---|
F | 月份完整格式 | January到December |
m | 数字表示学分,有前导零 | 01到12 |
M | 三个字母缩写的月份 | Jan到Dec |
n | 数字表示的月份,没有前导零 | 1到12 |
t | 指定月份有多少天 | 28到31 |
<?php
echo date("F")."<br>";//April —— 四月
echo date("m")."<br>";//04 —— 四月
echo date("M")."<br>";//Apr —— 四月
echo date("n")."<br>";//4 —— 四月
echo date("t")."<br>";//30 —— 本月的天数
?>
年 | -- | -- |
---|---|---|
L | 是否为闰年 | 是闰年为1,否则为0 |
o | ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。 | 如:2000 |
Y | 4位数字完整表示年份 | 如:2000 |
y | 2位数字表示年份 | 如:00 |
<?php
echo date("L")."<br>";//1 —— 是否为闰年,是闰年
echo date("o")."<br>";//2020 —— 今年年份
echo date("Y")."<br>";//2020 —— 今年年份
echo date("y")."<br>";//20 —— 今年年份,两位
?>
时间 | -- | -- |
---|---|---|
a | 小写的上午和下午值 | am 或 pm |
A | 大写的上午和下午值 | AM 或 PM |
B | Swatch Internet 标准时 | 000 到 999 |
g | 小时,12 小时格式,没有前导零 | 1 到 12 |
G | 小时,24 小时格式,没有前导零 | 0 到 23 |
h | 小时,12 小时格式,有前导零 | 01 到 12 |
H | 小时,24 小时格式,有前导零 | 00 到 23 |
i | 有前导零的分钟数 | 00 到 59> |
s | 秒数,有前导零 | 00 到 59> |
u | 需要注意的是 date() 函数总是返回 000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。 | 如: 654321 |
<?php
echo date("a")."<br>";//pm —— 上下午,小写字母
echo date("A")."<br>";//PM —— 上下午,大写字母
echo date("B")."<br>";//572 —— 标准时
echo date("g")."<br>";//8 —— 12小时制,八点
echo date("G")."<br>";//20 —— 24小时制,八点
echo date("h")."<br>";//08 —— 12小时制,八点,有前导零
echo date("H")."<br>";//20 —— 24小时制,八点,有前导零
echo date("i")."<br>";//44 —— 分钟数,有前导零
echo date("s")."<br>";//36 —— 秒 ,有前导零
echo date("u")."<br>";//00000
?>
时间格式
例如:2000/1/1-8:05:02
date("Y/n/j-G:i:s");
例如:2000 01 01 08:05:02
date("Y m d H:i:s");
例如:8:00pm
date("g:ia");
例如:Mon 2th
date("M jS");
获取微秒数
microtime([$get_as_float]);
$get_as_float 是 bool值,true是用浮点数格式
返回当前 Unix 时间戳和微秒数
如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分,字符串的两部分都是以秒为单位返回的。
<?php
echo microtime();//0.73614000 1586351237
?>
round(value,length) —— 小数进行四舍五入
length 表示 小数点个数
获取本地时间
localtime(time(),[is_ass]);
time() —— Unix 时间戳
is_ass —— 表示 返回数组的索引,true使用特殊索引,false使用数字索引,不设置,默认false
特殊索引:
"tm_sec" - 秒数, 0 到 59
"tm_min" - 分钟数, 0 到 59
"tm_hour" - 小时, 0 到 23
"tm_mday" - 月份中的第几日, 1 到 31
"tm_mon" - 年份中的第几个月, 0 (Jan) 到 11 (Dec)
"tm_year" - 年份,从 1900 开始
"tm_wday" - 星期中的第几天, 0 (Sun) 到 6 (Sat)
"tm_yday" - 一年中的第几天, 0 到 365
"tm_isdst" - 夏令时当前是否生效? 如果是生效的是正数, 0 代表未生效,负数代表未知。
<?php
$localtime1 = localtime();
$localtime2 = localtime(time(),true);
print_r($localtime1);//Array ( [0] => 42 [1] => 17 [2] => 21 [3] => 8 [4] => 3 [5] => 120 [6] => 3 [7] => 98 [8] => 0 )
echo "<br>";
print_r($localtime2);//Array ( [tm_sec] => 42 [tm_min] => 17 [tm_hour] => 21 [tm_mday] => 8 [tm_mon] => 3 [tm_year] => 120 [tm_wday] => 3 [tm_yday] => 98 [tm_isdst] => 0 )
?>