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
```
';