总结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与php MySQL 之间的关系
Jul 17 PHP
PHP Session变量不能传送到下一页的解决方法
Nov 27 PHP
探讨php中header的用法详解
Jun 07 PHP
PHP常用的缓存技术汇总
May 05 PHP
非常实用的PHP常用函数汇总
Dec 17 PHP
php session 写入数据库
Feb 13 PHP
Thinkphp单字母函数使用指南
May 08 PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 PHP
微信支付开发动态链接Native支付
Jul 12 PHP
PHP抓取远程图片(含不带后缀的)教程详解
Oct 21 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
Jul 24 PHP
Laravel登录失败次数限制的实现方法
Aug 26 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
phpBB BBcode处理的漏洞
2006/10/09 PHP
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
jquery 实现密码框的显示与隐藏示例代码
2013/09/18 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
python中查看变量内存地址的方法
2015/05/05 Python
对于Python装饰器使用的一些建议
2015/06/03 Python
python编程实现12306的一个小爬虫实例
2017/12/27 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
Python Numpy库datetime类型的处理详解
2019/07/13 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
Python控制台实现交互式环境执行
2020/06/09 Python
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
怎么写好自荐信
2013/10/30 职场文书
采购主管工作职责
2013/12/12 职场文书
《秋游》教学反思
2014/04/24 职场文书
担保书范文
2015/01/20 职场文书
2015年征兵工作总结
2015/07/23 职场文书
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python