总结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创建多级目录代码
Jun 05 PHP
php 归并排序 数组交集
May 10 PHP
PHP源代码数组统计count分析
Aug 02 PHP
PHP 文件系统详解
Sep 13 PHP
php调用MySQL存储过程的方法集合(推荐)
Jul 03 PHP
配置php网页显示各种语法错误
Sep 23 PHP
php实现aes加密类分享
Feb 16 PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
yii gridview实现时间段筛选功能
Aug 15 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 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
《APMServ 5.1.2》使用图解
2006/10/23 PHP
初级的用php写的采集程序
2007/03/16 PHP
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
PHP设计模式 注册表模式
2012/02/05 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
vue2.0 兄弟组件(平级)通讯的实现代码
2018/01/15 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
详解python发送各类邮件的主要方法
2016/12/22 Python
用TensorFlow实现多类支持向量机的示例代码
2018/04/28 Python
python实现人民币大写转换
2018/06/20 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
python模块如何查看
2020/06/16 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
出纳岗位职责
2013/11/09 职场文书
创业计划书的主要内容有哪些
2014/01/29 职场文书
房地产项目建议书
2014/03/12 职场文书
校运会通讯稿
2015/07/18 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
使用golang编写一个并发工作队列
2021/05/08 Golang
Python语言内置数据类型
2022/02/24 Python