总结PHP中DateTime的常用方法


Posted in PHP onAugust 11, 2016

前言

实例化对象前面加\表示的是,在命名空间中使用原生的类,如果没有使用命名空间的话,可以把前面的\给删除掉

1. 输出当前时间

$datetime = new \DateTime;
print_r($datetime->format('Y-m-d H:i:s'));

2. 输出给定的时间

$datetime = new \DateTime('2016-06-13');
print_r($datetime);

3. 根据给定的时间格式化为自己想要的时间

$datetime = \DateTime::createFromFormat('Ymd', '20160618');
print_r($datetime->format('Y-m-d'));

4. 输出Unix时间戳格式(方法1如果是1990年以前的会返回负数,而方法2则会返回false)

//方法1(php5.2):
$datetime = new \DateTime();
echo $datetime->format('U');exit;

//方法2(php5.3)推荐
$datetime = new \DateTime();
echo $datetime->getTimestamp();exit;

5. 根据给定的时间戳格式化为给定的时间

$datetime = new \DateTime();
$datetime->setTimestamp(1465783744);
echo $datetime->format('Y-m-d H:i:s');

6. 两个日期时间比对,年与年比对,月与月比对……

$datetime1 = new \DateTime('2016-01-01 10:11:18');
$datetime2 = new \DateTime('2017-05-11 22:21:21');
$interval = $datetime1->diff($datetime2);
print_r($interval->format('%Y'));//%表示使用格式化,R表示是大于这个日期(+),还是小于这个日期(-),a表示大于或小于多少天,时分秒正常使用y,m,d,h,i,s

7. 创建长度为几天前的时间

DateInterval构造函数的参数是一个表示时间间隔约定的字符串,这个时间间隔约定以字母P开头,后面跟着一个整数,最后是一个周期标识符,限定前面的整数。有效周期标识符如下: Y(年) M(月) D(日) W(周) H(时) M(分) S(秒) 间隔约定中既可以有时间也可以有日期,如果有时间需要在日期和时间之间加上字母T,例如,间隔约定P2D表示间隔两天,间隔约定P2DT5H2M表示间隔两天五小时两分钟。

$datetime = new \DateTime();
$interval = new \DateInterval('P2DT5H');
//或者使用createFromDateString方法
//$interval = \DateInterval::createFromDateString('1 month');
//修改DateTime实例
$datetime->add($interval);
echo $datetime->format('Y-m-d H:i:s');

8. 创建几天前的时间

$datetime = new \DateTime();
$interval = new \DateInterval('P2DT5H');
$datetime->sub($interval);
echo $datetime->format('Y-m-d H:i:s');
//ps:有个modify方法,这个方法是减去30,并不是像前推1天,输出的还是12月
$datetime = new \DateTime('2014/12/31');
$datetime->modify( '-1 month' );
print_r($datetime);exit;

9. 重置当前的DateTime对象的时间不同的日期,传递年,月,日

$datetime = new \DateTime();
$datetime->setDate(2015, 2, 28);
echo $datetime->format('Y-m-d');exit;

10. 重置当前的DateTime对象的时间不同的时间,传递时,分,秒(可选参数)

$datetime = new \DateTime();
$datetime->setTime(20, 20, 24);
echo $datetime->format('Y-m-d H:i:s');exit;

11. 格式化时间前更改时间的时区

$timezone = new \DateTimeZone('Asia/Calcutta');
$datetime = new \DateTime();
$datetime->setTimezone($timezone);
print_r($datetime->format('Y-m-d H:i:s'));exit;

12. 返回时区

$date = new \DateTime(null, new DateTimeZone('Asia/Shanghai'));
$tz = $date->getTimezone();
echo $tz->getName();

13. 计算两个时区的偏移值

$dateTimeZoneTaipei = new \DateTimeZone("Asia/Taipei");
$dateTimeZoneJapan = new \DateTimeZone("Asia/Tokyo");
$dateTimeTaipei = new \DateTime("now", $dateTimeZoneTaipei);
$dateTimeJapan = new \DateTime("now", $dateTimeZoneJapan);
$timeOffset = $dateTimeZoneJapan->getOffset($dateTimeTaipei);
print_r($timeOffset);exit;

14. 返回时间间隔,多长时间

$interval = new \DateInterval('P2Y4DT6H8M');
echo $interval->format('%d days');

15. 迭代输出距离当前日期的前几天日期。

DatePeriod类的构造方法接受三个参数而且都必须提供 一个DateTime实例,表示迭代开始的日期和时间 一个DateInterval实例,表示下一个日期和时间的间隔 一个整数,表示迭代的总次数 第四个参数是可选的,用于显式指定周期的结束日期和时间,如果迭代时想要排除开始日期和时间,可以把构造方法的最后一个参数设为DatePeriod::EXCLUDE_START_DATE常量:

$datetime = new \DateTime();
$interval = \DateInterval::createFromDateString('-1 day');
$period = new \DatePeriod($datetime, $interval, 3);
foreach ($period as $date) {
  echo $date->format('Y-m-d'), PHP_EOL;
}

总结

以上就是PHP中DateTime的常用方法总结的全部内容,内容整理比较齐全,相信对大家日常使用PHP很有帮助,建议大家收藏方便以后查阅。

PHP 相关文章推荐
小偷PHP+Html+缓存
Dec 20 PHP
php getsiteurl()函数
Sep 05 PHP
PHP基础陷阱题(变量赋值)
Sep 12 PHP
php 启动报错如何解决
Jan 17 PHP
ThinkPHP实例化模型的四种方法概述
Aug 22 PHP
php判断当前操作系统类型
Oct 28 PHP
Yii框架实现邮箱激活的方法【数字签名】
Oct 18 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
php 读取文件夹下所有图片、文件的实例
Oct 17 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 PHP
浅析PHP中json_encode与json_decode的区别
Jul 15 PHP
php 防护xss,PHP的防御XSS注入的终极解决方案
Apr 01 PHP
php使用curl详细解析及问题汇总
Aug 11 #PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
Aug 11 #PHP
示例详解Laravel重置密码代码重构
Aug 10 #PHP
修改Laravel5.3中的路由文件与路径
Aug 10 #PHP
Yii2中关联查询简单用法示例
Aug 10 #PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 #PHP
Yii2实现同时搜索多个字段的方法
Aug 10 #PHP
You might like
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
zen cart实现订单中增加paypal中预留电话的方法
2016/07/12 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
JavaScript 学习历程和心得分享
2010/12/12 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
js选择器全面解析
2016/06/27 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
计算机网络及管理学专业求职信
2014/06/05 职场文书
经济管理自荐书
2014/06/09 职场文书
死亡赔偿协议书
2015/01/28 职场文书
小学记事作文之200字
2019/08/06 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
如何使用vue3打造一个物料库
2021/05/08 Vue.js
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技