总结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 相关文章推荐
其他功能
Oct 09 PHP
火车采集器 免费版使出收费版本功能实现原理
Sep 17 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
Jun 03 PHP
php将会员数据导入到ucenter的代码
Jul 18 PHP
Thinkphp的volist标签嵌套循环使用教程
Jul 08 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
PHP精确计算功能示例
Nov 29 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
Dec 09 PHP
PHP设计模式之模板方法模式定义与用法详解
Apr 02 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 PHP
PHP共享内存使用与信号控制实例分析
May 09 PHP
php+Ajax处理xml与json格式数据的方法示例
Mar 04 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中str_replace函数使用小结
2008/10/11 PHP
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
利用Python获取操作系统信息实例
2016/09/02 Python
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
python 限制函数调用次数的实例讲解
2018/04/21 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
python 字符串只保留汉字的方法
2018/11/16 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
全球性的奢侈品梦工厂:Forzieri(福喜利)
2019/02/20 全球购物
为什么要使用servlet
2016/01/17 面试题
化学相关工作求职信
2013/10/02 职场文书
有针对性的求职自荐信
2013/11/14 职场文书
办公室内勤岗位职责范本
2013/12/09 职场文书
可贵的沉默教学反思
2014/02/06 职场文书
自动一体化专业求职信
2014/03/15 职场文书
办公室打字员岗位职责
2014/04/16 职场文书
总经理人事任命书
2014/06/05 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
婚育证明格式
2015/06/17 职场文书
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python
【海涛教你打DOTA】黑鸟第一视角解说
2022/04/01 DOTA
Python测试框架pytest高阶用法全面详解
2022/06/01 Python
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers