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

获取顺序,没有就向下一层查找:

  1. date_default_timezone_set()函数设置的时区
  2. PHP5.40之前: TZ 环境变量
  3. date.timezone配置选项
  4. PHP5.40之前:查询操作系统主机(前提系统支持并允许)
  5. 若都不行,会返回 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时间戳切刀时间日期信息

data( )

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 )
    ?>
上一篇下一篇

猜你喜欢

热点阅读