总结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 CKEditor 上传图片实现代码
Nov 06 PHP
php算开始时间到过期时间的相隔的天数
Jan 12 PHP
openflashchart 2.0 简单案例php版
May 21 PHP
php图片加中文水印实现代码分享
Oct 31 PHP
php 判断数组是几维数组
Mar 20 PHP
PHP在线生成二维码代码(google api)
Jun 03 PHP
php foreach正序倒序输出示例代码
Jul 01 PHP
PHP使用适合阅读的格式显示文件大小的方法
Mar 05 PHP
CodeIgniter基于Email类发邮件的方法
Mar 29 PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 PHP
PHP实现的数独求解问题示例
Apr 18 PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 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控制网页过期时间的代码
2008/09/28 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
用js重建星际争霸
2006/12/22 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
Pycharm学习教程(1) 定制外观
2017/05/02 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
Python基于WordCloud制作词云图
2019/11/29 Python
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
大学生毕业自我鉴定范文
2013/11/03 职场文书
高中毕业生生活的自我评价
2013/12/08 职场文书
2014年置业顾问工作总结
2014/11/17 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python