实例化:

$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. ReactiveCocoa操作方法-重复

    retry重试      只要失败,就会重新执行创建信号中的block,直到成功. __block int i = 0; [[[RACSignal createSignal:^RACDisposabl ...

  2. Spring boot 配置文件默认放置位置,和加载优先级

    一 .默认配置文件目录 spring boot 启动会扫描以下位置的application.properties 或者application.yml文件作为spring boot 的默认配置文件 ,加 ...

  3. 【spring AOP】@Pointcut的12种用法

    @Pointcut用来标注在方法上来定义切入点. 使用格式:@ 注解(value="表达标签 (表达式格式)").如:@Pointcut("execution(* com ...

  4. 通过Jedis操作Redis

    package com.yh; import org.junit.After; import org.junit.Before; import org.junit.Test; import redis ...

  5. 南京邮电大学CTF密码学之MD5-golang与php代码实现

    题目内容:这里有一段丢失的md5密文 e9032???da???08????911513?0???a2 要求你还原出他并且加上nctf{}提交 已知线索 明文为: TASC?O3RJMV?WDJKX? ...

  6. 【C#】【假条生成系统】【单位剖析】如何判断在文本框输入了几个人名?

    我们规定,人名和人名之间使用顿号隔开 那么, 1个人,就是0个顿号 2个人,就是1个顿号 3个人,就是2个顿号 -- 所以我们可以判断文本框中顿号的出现次数. 出现0次,则为1人,出1次,则为两人. ...

  7. win10更新后任务栏卡死 的原因和解决办法

    @ 目录 现象: 原因: 第一步:断网并关闭资讯和兴趣 第二步:卸载更新 第三步:关闭win10自动更新 第四步:永久关闭资讯和兴趣 现象: win10 更新后,开机任务栏卡死,点开始反应,设置页面无 ...

  8. 纯css设置元素高度与宽度相等

    设置图片高度等于宽度 .img-box{ width:100%; height:0; position: relative; padding-bottom: 100% } .img-box img{ ...

  9. 拆分函数Splitter.Split…(Power Query 之 M 语言)

    按相同分隔符拆分: =Splitter.SplitTextByDelimiter("拆分符号", 引号字符) 拆分符号 直接输入 特殊符号 制表符:#(tab) 回车:#(cr) ...

  10. CF699A Launch of Collider 题解

    Content 有 \(n\) 辆车在一条数轴上,第 \(i\) 辆车在 \(a_i\) 上,每辆车要么向左,要么向右.开始,它们以 \(1\) 个单位每秒的速度在行驶.问你第一次撞车发生在第几秒的时 ...