date
格式化一个本地时间/日期**
语法格式:
date ( string \$format [, int \$timestamp ] ) : string
格式字串可以识别以下 format
参数的字符串
format 字符 |
说明 | 返回值例子 |
---|---|---|
日 | --- | --- |
d | 月份中的第几天,有前导零的 2 位数字 | 01 到 31 |
D | 星期中的第几天,文本表示,3 个字母 | Mon 到 Sun |
j | 月份中的第几天,没有前导零 | 1 到 31 |
l(“L”的小写字母) | 星期几,完整的文本格式 | Sunday 到 Saturday |
N | ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) | 1(表示星期一)到 7(表示星期天) |
S | 每月天数后面的英文后缀,2 个字符 | st,nd,rd 或者 th。可以和 j 一起用 |
w | 星期中的第几天,数字表示 | 0(表示星期天)到 6(表示星期六) |
z | 年份中的第几天 | 0 到 365 |
星期 | --- | --- |
W | ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) | 例如:42(当年的第 42 周) |
月 | --- | --- |
F | 月份,完整的文本格式,例如 January 或者 March | January 到 December |
m | 数字表示的月份,有前导零 | 01 到 12 |
M | 三个字母缩写表示的月份 | Jan 到 Dec |
n | 数字表示的月份,没有前导零 | 1 到 12 |
t | 指定的月份有几天 | 28 到 31 |
年 | --- | --- |
L | 是否为闰年 | 如果是闰年为 1,否则为 0 |
o | ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) | Examples: 1999 or 2003 |
Y | 4 位数字完整表示的年份 | 例如:1999 或 2003 |
y | 2 位数字表示的年份 | 例如:99 或 03 |
时间 | --- | --- |
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 | 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。 | 示例: 654321 |
时区 | --- | --- |
e | 时区标识(PHP 5.1.0 新加) | 例如:UTC,GMT,Atlantic/Azores |
I | 是否为夏令时 | 如果是夏令时为 1,否则为 0 |
O | 与格林威治时间相差的小时数 | 例如:+0200 |
P | 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) | 例如:+02:00 |
T | 本机所在的时区 | 例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。 |
Z | 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 | -43200 到 43200 |
完整的日期/时间 | --- | --- |
c | ISO 8601 格式的日期(PHP 5 新加) | 2004-02-12T15:19:21+00:00 |
r | RFC 822 格式的日期 | 例如:Thu, 21 Dec 2000 16:01:07 +0200 |
U | 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 | 参见 time() |
格式字串中不能被识别的字符将原样显示。Z 格式在使用 gmdate() 时总是返回 0。
以上内容摘自 php 学习手册
date 函数的引用及常用参数解析
<?php
echo date('Y年m月d日').'<br />'; // => 2019年04月26日
echo date('y/n/j').'<br />'; // => 19/4/26
echo date('Y-m-d H:i:s').'<br />'; // => 2019-04-26 13:13:59
echo date('今天是 l, 简写D').'<br />'; // => 今天是 Friday, 简写Fri
echo date('今天是这周的第 N 天').'<br />'; // => 今天是这周的第 5 天
echo date('jS').'<br />'; // => 26th
echo date('今天是星期w').'<br />'; // => 今天是星期5
echo date('今天是今年的第z天').'<br />'; // => 今天是今年的第115天
echo date('今天是今年的第z天').'<br />'; // => 今天是今年的第115天
echo date('今年的第W周').'<br />'; // => 今年的第17周
echo date('现在是F, 简写M').'<br />'; // => 现在是April, 简写Apr
echo date('这个月有t天').'<br />'; // => 这个月有30天
echo date('L') == 1 ? '今年是闰年' : '今年不是闰年'.'<br />'; // => 今年不是闰年
echo date('o').'<br />'; // => 2019
echo date('g:i:s a').'<br />'; // => 1:05:26 pm
echo date('G:i:s A').'<br />'; // => 13:05:26 PM
echo date('h:i:s a').'<br />'; // => 01:05:26 pm
echo date('H:i:s A').'<br />'; // => 13:05:26 PM
echo date('当前设置的时区: e').'<br />'; // => 当前设置的时区: PRC
echo date('本机所在的时区: T').'<br />'; // => 本机所在的时区: CST 备注: CST可视为美国、澳大利亚、古巴或中国的标准时间
echo 'ISO 8601 格式的日期(PHP 5 新加): '.date('c').'<br />'; // => ISO 8601 格式的日期(PHP 5 新加): 2019-04-26T13:11:57+08:00
echo 'RFC 822 格式的日期: '.date('r').'<br />'; // => RFC 822 格式的日期: Fri, 26 Apr 2019 13:11:57 +0800
echo '从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数: '.date('U').'<br />'; // => 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数: 1556255517
时间戳的使用
-
时间戳 timestamp
从 1970 年1月1日00:00:00到当前时间所经历的秒数 -
获取当前的时间戳
time()
<?php
echo time().'<br />'; // => 1556328368
echo date('现在的时间是 Y:m:d H:i:s').'<br />'; // => 现在的时间是 2019:04:27 09:26:08
echo date('现在的时间是 Y:m:d H:i:s', time()).'<br />'; // => 现在的时间是 2019:04:27 09:26:08
echo date('一周后的时间是 Y:m:d H:i:s', time()+7*24*60*60 ).'<br />'; // => 一周后的时间是 2019:05:04 09:26:08
echo date('三十天前的时间是 Y:m:d H:i:s', time()-30*24*60*60 ).'<br />'; // => 三十天前的时间是 2019:03:28 09:26:08
-
获取指定日期的时间戳
mktime()
mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] ) : int
参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值
参数解析:
mktime(hour,minute,second,month,day,year)
mktime(小时,分钟,秒数,月,日,年)
<?php
$birthday = mktime(8, 0, 0, 2, 15, 1995);
echo $birthday.'<br/>'; // => 792806400
echo date('Y:m:d H:i:s', $birthday).'<br/>'; // => 1995:02:15 08:00:00
$timestamp = time()-$birthday;
echo '我今年 '.floor($timestamp/(24*60*60*365)) .' 岁'; // => 我今年 24 岁
floor(float $value)
: 返回不大于 value 的最接近的整数,舍去小数部分取整
strtotime 函数的使用
strtotime — 将任何字符串的日期时间描述解析为 Unix 时间戳
<?php
echo strtotime('now').'<br />'; // => 1556340288
echo '现在是 '.date('Y-m-d H:i:s', strtotime('now')).'<br />'; // => 现在是 2019-04-27 12:46:10
echo '明天是 '.date('Y-m-d H:i:s', strtotime('+1 day')).'<br />'; // => 明天是 2019-04-28 12:46:10
echo '五天前 '.date('Y-m-d H:i:s', strtotime('-5 days')).'<br />'; // => 五天前 2019-04-22 12:48:19
echo '5年6个月16天后 '.date('Y-m-d H:i:s', strtotime('+5 years 6 months 16 days')).'<br />'; // => 5年6个月16天后 2024-11-12 12:52:07
微秒
- 通过
microtime()
来获取微秒
_ 通过微秒计算 php 程序执行的时间
<?php
header('content-type: text/html;charset=utf-8');
echo microtime().'<br />'; // => 0.62073800 1556341513
echo microtime(true).'<br />'; // => 1556341513.6207
$start = microtime(true);
for ($i=0; $i<=1000000; $i++){
$arr[] = $i;
}
$end = microtime(true);
$time = $end - $start;
echo 'for 循环的执行时间 '.$time; // => for 循环的执行时间 0.11352300643921
其他日期时间函数的使用
-
getdate() 函数的使用
getdate($timestamp)
取得日期/时间信息
返回一个根据
timestamp
得出的包含有日期信息的关联数组 array。如果没有给出时间戳则认为是当前本地时间。
<?php
header('content-type: text/html;charset=utf-8');
var_dump(getdate()); // => array(11) { ["seconds"]=> int(23) ["minutes"]=> int(9) ["hours"]=> int(13) ["mday"]=> int(27) ["wday"]=> int(6) ["mon"]=> int(4) ["year"]=> int(2019) ["yday"]=> int(116) ["weekday"]=> string(8) "Saturday" ["month"]=> string(5) "April" [0]=> int(1556341763) }
返回的关联数组中的键名单元
键名 | 说明 | 返回值例子 |
---|---|---|
"seconds" | 秒的数字表示 | 0 到 59 |
"minutes" | 分钟的数字表示 | 0 到 59 |
"hours" | 小时的数字表示 | 0 到 23 |
"mday" | 月份中第几天的数字表示 | 1 到 31 |
"wday" | 星期中第几天的数字表示 | 0 (周日) 到 6 (周六) |
"mon" | 月份的数字表示 | 1 到 12 |
"year" | 4 位数字表示的完整年份 | 比如: 1999 或 2003 |
"yday" | 一年中第几天的数字表示 | 0 到 365 |
"weekday" | 星期几的完整文本表示 | Sunday 到 Saturday |
"month" | 月份的完整文本表示,比如 January 或 March | January 到 December |
0 | 自从 Unix 纪元开始至今的秒数,和 time() 的返回值以及用于 date() 的值类似。 | 系统相关,典型值为从 -2147483648 到2147483647。 |
-
gettimeofday() 函数的使用
gettimeofday
— 取得当前时间默认返回一个 [array]。如果
return_float
设置了则会返回一个 [float]。数组中的键为:
- "sec" - 自 Unix 纪元起的秒数
- "usec" - 微秒数
- "minuteswest" - 格林威治向西的分钟数
- "dsttime" - 夏令时修正的类型
-
checkdate() 函数的使用
checkdate(月,日,年)
检查由参数构成的日期的合法性。如果每个参数都正确定义了则会被认为是有效的。 如果给出的日期有效则返回 TRUE,否则返回 FALSE。
<?php
header('content-type: text/html;charset=utf-8');
var_dump(checkdate(12,23, 2019)); // => bool(true)
var_dump(checkdate(45,23, 2019)); // => bool(false)
var_dump(checkdate(12,33, 2019)); // => bool(false)
var_dump(checkdate(2,29, 2016)); // => bool(true)
var_dump(checkdate(2,29, 2019)); // => bool(false)
参考资料:
https://www.imooc.com/learn/827
https://www.php.net/manual/zh/langref.php
网友评论