实例化:

$date = new DateTime();
$date = new DateTime('2018-01-01');
$date = new DateTime('tomorrow');
$date = new DateTime('+2 day');
$date = new DateTime('1408950651');

设置日期时间:

$date->setTimestamp('1514739661');
$date->setDate(2020, 8, 8);
$date->setTime(2, 3, 4);
$date->modify('+1 day');
$date->modify('+1 month');
$date->modify('-1 year');
$date->add(new \DateInterval('P2DT5H2M'));
$date->sub(new \DateInterval('P2DT5H2M'));
$date->setTimezone(new DateTimeZone('Asia/Shanghai'));

有效标识符如下: Y(年) M(月) D(日) W(周) H(时) M(分) S(秒)

约定以字母P开头,如果有时间,需要在时间之前加入T。

$interval->invert = 1; // 指定为负数。

格式化及取值:

$date->format('Y-m-d H:i:s');  // 格式化输出
$date->getTimestamp(); // 获取时间戳
$data->getTimezone()->getName(); // 获取时区Asia/Shanghai

比较日期:

$date = new DateTime;
$date1 = new DateTime('2016-01-01');
print_r($date > $date1 ? true : false); print_r($date->diff($date1));
// DateInterval Object ( [y] => 2 [m] => 2 [d] => 12 [h] => 16 [i] => 52 [s] => 50 [days] => 802 ) // 格式化输出
$diff = $date->diff($date1);
echo $diff->format("相差 %Y 年 %m 月 %d 天");
// 相差 02 年 2 月 12 天

输出区间内的日期时间:

<?php
$start = new \DateTime("2020-12-01");
$end = new \DateTime("2020-12-31");
$recurrences = 4;
$interval = new \DateInterval('P7D'); // 方式一
$period = new DatePeriod($start, $interval, $recurrences, DatePeriod::EXCLUDE_START_DATE);
foreach ($period as $v) {
echo $v->format("Y-m-d") . PHP_EOL;
} // 方式二
$period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE);
foreach ($period as $v) {
echo $v->format("Y-m-d") . PHP_EOL;
}

参考:https://www.php.net/manual/zh/class.datetime.php

PHP DateTime类常用方法总结的更多相关文章

  1. 当碰到unix纪元问题时strtotime怎么转时间戳(DateTime类的使用方法)

    UNIX纪元时间又称POSIX时间/新纪元时间(Epoch Time):从协调世界时1970年1月1日0时0分0秒起到现在的总秒数,不包括闰秒.正值表示1970以後,负值则表示1970年以前. Uni ...

  2. C#string类;math类;datetime类

    String类: .Length字符的长度   .Trim()去掉开头以及结尾的空格 .TrimStart()去掉字符串开头的空格 .TrimEnd()去掉字符串后面的空格   .ToUpper()全 ...

  3. string、math、random、datetime类

    1.string类 变量.Replace("想要替换掉的字符或字符串","转换后的字符或字符串");//替换 练习:判断邮箱格式是否正确            ...

  4. PHP使用DateTime类做时间日期到字符串转换

    PHP关于时间日期的处理不是很规范,简单就简单了,就是不知道输入的字符串是否能够正确转化为需要的DateTime类型. 面向对象的PHP应该使用DateTime类来做string和dateTime的转 ...

  5. C# - 系统类 - DateTime类

    DateTime类 ns:System 此类是一个结构 提供了访问和修改它所代表的时间 创建DateTime实例的几种方式 DateTime time = , , , , , ); Console.W ...

  6. C# DateTime类,TimeSpan类

    DateTime类是.Net中用于处理时间类型数据的. 一.字段 MaxValue 表示 DateTime 的最大可能值.此字段为只读. MinValue     表示 DateTime 的最小可能值 ...

  7. 类之string类、Math类、DateTime类

    String类 string a = "abcdef123456"; 注:字符串的长度是从0开始计数的如:0,1,2,3,4,5,6,7,8,9........ a.Length; ...

  8. Python datetime模块的datetime类

    datetime模块定义了下面这几个类: datetime.date:表示日期的类.常用的属性有year, month, day. datetime.time:表示时间的类.常用的属性有hour, m ...

  9. 【2017-02-26】String类、Math类、DateTime类

    一.String类 黑色小扳手 - 属性     后面不带括号紫色立方体 - 方法     后面带括号 字符串.Length  -  字符串长度,返回int类型 字符串.TrimStart() - 去 ...

随机推荐

  1. MyBatis(4):使用limit实现分页

    用limit实现分页,首先要创建一个Maven项目,搭建好mybatis的实验环境,并且连接好数据库 代码 1,编写dao接口 UserMapper //查询全部用户实现分页 List<User ...

  2. 【Python】【Module】json and pickle

    Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] 和 [python基本数据类型]间进 ...

  3. 拷贝txt文本中的某行的数据到excel中

    package com.hope.day01;import java.io.*;import java.util.ArrayList;public class HelloWorld {    publ ...

  4. 注册页面css版本

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. SVM中的软间隔最大化与硬间隔最大化

    参考文献:https://blog.csdn.net/Dominic_S/article/details/83002153 1.硬间隔最大化 对于以上的KKT条件可以看出,对于任意的训练样本总有ai= ...

  6. Jsp/Servlet文件的上传和下载

    文件上传的入门 文件上传的步骤:       总结实现思路: 1.创建核心上传类ServletFileUpload,这个时候需要一个工厂类 2.创建磁盘工厂类对象DiskFileItemFactory ...

  7. 30个类手写Spring核心原理之AOP代码织入(5)

    本文节选自<Spring 5核心原理> 前面我们已经完成了Spring IoC.DI.MVC三大核心模块的功能,并保证了功能可用.接下来要完成Spring的另一个核心模块-AOP,这也是最 ...

  8. Nginx 架构基础

    1 Nginx请求处理流程 2 Nginx进程结构 3 Nginx进程管理:信号 3.1 Master进程 监控worker进程 CHLD 管理worker进程 接收信号 TERM,INT QUIT ...

  9. MySQL获取对应时间

    一.查询当前时间包含年月日 SELECT CURDATE(); SELECT CURRENT_DATE(); 二.查询当前时间包含年月日时分秒 SELECT NOW(); SELECT SYSDATE ...

  10. CF805B 3-palindrome 题解

    Content 给定一个整数 \(n\),请构造出长度为 \(n\) 的仅含 a.b.c 三个字母的字符串,使得其中没有长度为 \(3\) 的回文子串,并且 c 出现的次数尽可能少. 数据范围:\(1 ...