美文网首页
PHP 的 date 日期时间常用函数解析 -- PHP 学习

PHP 的 date 日期时间常用函数解析 -- PHP 学习

作者: 无故下架内容so账号已弃用 | 来源:发表于2019-04-27 13:21 被阅读0次

date

格式化一个本地时间/日期**

语法格式:

date ( string \$format [, int \$timestamp ] ) : string

格式字串可以识别以下 format 参数的字符串

format字符 说明 返回值例子
--- ---
d 月份中的第几天,有前导零的 2 位数字 0131
D 星期中的第几天,文本表示,3 个字母 MonSun
j 月份中的第几天,没有前导零 131
l(“L”的小写字母) 星期几,完整的文本格式 SundaySaturday
N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
S 每月天数后面的英文后缀,2 个字符 stndrd 或者 th。可以和 j 一起用
w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
z 年份中的第几天 0365
星期 --- ---
W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周)
--- ---
F 月份,完整的文本格式,例如 January 或者 March JanuaryDecember
m 数字表示的月份,有前导零 0112
M 三个字母缩写表示的月份 JanDec
n 数字表示的月份,没有前导零 112
t 指定的月份有几天 2831
--- ---
L 是否为闰年 如果是闰年为 1,否则为 0
o ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003
Y 4 位数字完整表示的年份 例如:19992003
y 2 位数字表示的年份 例如:9903
时间 --- ---
a 小写的上午和下午值 ampm
A 大写的上午和下午值 AMPM
B Swatch Internet 标准时 000999
g 小时,12 小时格式,没有前导零 112
G 小时,24 小时格式,没有前导零 023
h 小时,12 小时格式,有前导零 0112
H 小时,24 小时格式,有前导零 0023
i 有前导零的分钟数 0059>
s 秒数,有前导零 0059>
u 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。 示例: 654321
时区 --- ---
e 时区标识(PHP 5.1.0 新加) 例如:UTCGMTAtlantic/Azores
I 是否为夏令时 如果是夏令时为 1,否则为 0
O 与格林威治时间相差的小时数 例如:+0200
P 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) 例如:+02:00
T 本机所在的时区 例如:ESTMDT(【译者注】在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。
Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -4320043200
完整的日期/时间 --- ---
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" 秒的数字表示 059
"minutes" 分钟的数字表示 059
"hours" 小时的数字表示 023
"mday" 月份中第几天的数字表示 131
"wday" 星期中第几天的数字表示 0 (周日) 到 6 (周六)
"mon" 月份的数字表示 112
"year" 4 位数字表示的完整年份 比如: 19992003
"yday" 一年中第几天的数字表示 0365
"weekday" 星期几的完整文本表示 SundaySaturday
"month" 月份的完整文本表示,比如 January 或 March JanuaryDecember
0 自从 Unix 纪元开始至今的秒数,和 time() 的返回值以及用于 date() 的值类似。 系统相关,典型值为从 -21474836482147483647
  • 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

相关文章

  • PHP 的 date 日期时间常用函数解析 -- PHP 学习

    date 格式化一个本地时间/日期** 语法格式: 格式字串可以识别以下 format 参数的字符串 格式字串中不...

  • PHP 日期和时间函数

    PHP date() 函数用于对日期或时间进行格式化。 PHP Date() 函数:函数把时间戳格式化为更易读的日...

  • php date函数

    date日期时间函数是php函数部分核心,下面我来列举下它的用法 语法 date(format,timestamp...

  • 时间整合

    PHP时间戳和日期相互转换在php中我们要把时间戳转换日期可以直接使用date函数来实现,如果要把日期转换成时间戳...

  • mysql 时间戳与日期格式的相互转换

    PHP方式转换:UNIX时间戳转换为日期用函数: date()date('Y-m-d H:i:s', 115621...

  • mac环境下PHP系统时区设置

    前言 由于PHP5.0对date()函数进行了重写,因此,目前的日期时间系统时间少了8个小时。在PHP语言中默认设...

  • PHP 的 date 日期时间函数库简介 -- PHP 学习 (

    日期时间函数库简介 日期时间函数库是 PHP 内置函数库, 可以通过日期时间函数库获得服务器的日期时间相关内容 时...

  • PHP中的日期时间函数

    日期时间函数库的简介 设置时区1、修改php的配置文件date.timezone设置时区2、通过date_defa...

  • PHP日期处理

    Date\Time Date/Time 函数允许您从 PHP 脚本运行的服务器上获取日期和时间。您可以使用 Dat...

  • 2018 10 19

    继续学习常用php原生函数

网友评论

      本文标题:PHP 的 date 日期时间常用函数解析 -- PHP 学习

      本文链接:https://www.haomeiwen.com/subject/opuigqtx.html