总结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常用的文件操作函数经典收藏
Apr 02 PHP
关于Zend Studio 配色方案插件的介绍
Jun 24 PHP
ThinkPHP CURD方法之table方法详解
Jun 18 PHP
ThinkPHP的MVC开发机制实例解析
Aug 23 PHP
php实现高效获取图片尺寸的方法
Dec 12 PHP
PHP实现全角字符转为半角方法汇总
Jul 09 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
Dec 14 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
Jan 11 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
Jul 10 PHP
PHP实现的curl批量请求操作示例
Jun 06 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
11个PHP 分页脚本推荐
2011/08/15 PHP
php全局变量和类配合使用深刻理解
2013/06/05 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
php中yii框架实例用法
2020/12/22 PHP
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
node.js中的require使用详解
2014/12/15 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
node.js中fs.stat与fs.fstat的区别详解
2017/06/01 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
2020/07/02 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
Canvas 文本填充线性渐变的使用详解
2020/06/22 HTML / CSS
销售辞职报告范文
2014/01/12 职场文书
设计师个人求职信范文
2014/02/02 职场文书
期末自我鉴定
2014/02/02 职场文书
詹天佑教学反思
2014/04/30 职场文书
2015年老干部工作总结
2015/04/23 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript
Python机器学习三大件之一numpy
2021/05/10 Python
SQL Server中锁的用法
2022/05/20 SQL Server