总结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与C#分别格式化文件大小的代码
May 14 PHP
PHP中如何判断AJAX提交的数据
Feb 05 PHP
preg_match_all使用心得分享
Jan 31 PHP
php对数组排序代码分享
Feb 24 PHP
浅析php中json_encode()和json_decode()
May 25 PHP
分享一段php获取linux服务器状态的代码
May 27 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
php实现在限定区域里自动调整字体大小的类实例
Apr 02 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
微信封装的调用微信签名包的类库
Jun 08 PHP
PHP常见过waf webshell以及最简单的检测方法
May 21 PHP
PHP实现获取url地址中顶级域名的方法示例
Jun 05 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中读取和写入WORD文档的代码
2008/04/09 PHP
PHP学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
laravel 时间格式转时间戳的例子
2019/10/11 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
jquery $.ajax入门应用一
2008/11/19 Javascript
JS代码放在head和body中的区别分析
2011/12/01 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
小程序云开发实现数据库异步操作同步化
2019/05/18 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
python实现计算倒数的方法
2015/07/11 Python
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
Python整数对象实现原理详解
2019/07/01 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
新东方旗下远程教育网站:新东方在线
2020/03/19 全球购物
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
应付会计岗位职责
2013/12/12 职场文书
幼儿运动会邀请函
2014/01/17 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书
2019年大学生职业生涯规划书
2019/03/25 职场文书
24年收藏2000多部退役军用电台
2022/02/18 无线电