总结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 相关文章推荐
怎么使 Mysql 数据同步
Oct 09 PHP
smarty实例教程
Nov 19 PHP
PHP伪静态页面函数附使用方法
Jun 20 PHP
PHP Pear 安装及使用
Mar 19 PHP
php中选择什么接口(mysql、mysqli)访问mysql
Feb 06 PHP
php可生成缩略图的文件上传类实例
Dec 17 PHP
CI操作cookie的方法分析(基于helper类库)
Mar 28 PHP
PHP读取文件的常见几种方法
Nov 03 PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 PHP
php 判断过去离现在几年的函数(实例代码)
Nov 15 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 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遍历目录与文件夹的多种方法详解
2013/11/14 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
javascript数组组合成字符串的脚本
2021/01/06 Javascript
js cookies实现简单统计访问次数
2009/11/24 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
js怎么终止程序return不行换jfslk
2013/05/30 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
vue中使用echarts的示例
2021/01/03 Vue.js
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
Python2.x版本中cmp()方法的使用教程
2015/05/14 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
浅析HTML5 Landmark
2020/09/11 HTML / CSS
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
商务考察邀请函范文
2014/01/21 职场文书
旅游节目策划方案
2014/05/26 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
个人委托函范文
2015/01/29 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
python自动化测试通过日志3分钟定位bug
2021/11/20 Python
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android