DateTime 时间函数

最后更新于:2022-04-02 02:28:25

[TOC] ## 概述 DateTime 继承 DateTimeInterface 接口 DateTimeInterface 方法 ``` DateTime :: diff —返回两个DateTime对象之间的差 DateTime :: format —返回根据给定格式格式化的日期 DateTime :: getOffset —返回时区偏移量 DateTime :: getTimestamp —获取Unix时间戳 DateTime :: getTimezone —返回相对于给定DateTime的时区 ``` DateTime 方法 ``` DateTime::__construct($time='now', DateTimeZone $timezone=null) — 返回一个新的 DateTime 对象 DateTime::add — 给一个 DateTime 对象增加一定量的天,月,年,小时,分钟 以及秒。 DateTime::getLastErrors — 获取警告和错误信息 DateTime::modify — 修改日期时间对象的值 DateTime::setDate — 设置 DateTime 对象的日期 DateTime::setTime — 设置 DateTime 对象的时间 DateTime::setTimestamp — 以 Unix 时间戳的方式设置 DateTime 对象 DateTime::setTimezone — 设置 DateTime 对象的时区 DateTime::sub — 对一个 DateTime 对象减去一定量的 日、月、年、小时、分钟和秒。 ``` ## 实例 ### 时间戳转换 ``` $date = new DateTime("@1598594975"); echo $date->format('Y-m-d H:i:s')."\n"; // 2020-08-28 06:09:35 ``` ### createFromFormat('Y-m-d', '2009-02-15');指定格式 ``` echo 'Current time: ' . date('Y-m-d H:i:s') . "\n"; // Current time: 2020-08-28 13:52:01 $date = DateTime::createFromFormat('Y-m-d', '2009-02-15'); echo $date->format('Y-m-d H:i:s') . "\n"; // 2009-02-15 13:52:01 $date = DateTime::createFromFormat('Y-m-d H:i:s', '2009-02-15 15:16:17'); echo $date->format('Y-m-d H:i:s') . "\n"; // 2009-02-15 15:16:17 ``` ### modfiy ``` $date = new DateTime('2000-12-31'); $date->modify('+1 month'); echo $date->format('Y-m-d') . "\n"; // 2001-01-31 $date->modify('+1 month'); echo $date->format('Y-m-d') . "\n"; // 2001-03-03 ``` ### setDate / setTime / setTimestamp / setTimezone ``` $date = new DateTime(); $date->setDate(2020, 2, 3); $date->setTime(23,23,12); echo $date->format('Y-m-d H:i:s')."\n"; // 2020-02-03 23:23:12 $date->setTimestamp(1598594975); echo $date->format('Y-m-d H:i:s'); // 2020-08-28 14:09:35 ``` ### modify 修改时间 ``` $date = new DateTime("2020-08-28 06:09:35"); $date->modify("+21 day"); $date->modify("-20 day"); echo $date->format('Y-m-d H:i:s')."\n"; // 2020-08-29 06:09:35 ``` ### 差值 ``` date_default_timezone_set('PRC'); $date = new DateTime("2020-08-28 06:09:35"); $date1 = new DateTime("2020-10-29 06:09:35"); echo $date->diff($date1)->days."\n";//61 echo $date->diff($date1)->format("%R | %m month ≈ %a days"); // + 2 month ≈ dayss ``` ### 时间转时间戳 ``` date_default_timezone_set('PRC'); $date = new DateTime("2020-08-28 06:09:35"); echo $date->getTimestamp(); // 1598566175 ```
';