总结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 源代码压缩小工具
Dec 22 PHP
给初学者的30条PHP最佳实践(荒野无灯)
Aug 02 PHP
一些需要禁用的PHP危险函数(disable_functions)
Feb 23 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
Jan 29 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
php结合curl实现多线程抓取
Jul 09 PHP
php实现的单一入口应用程序实例分析
Sep 23 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
Feb 15 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
Apr 11 PHP
php生成无限栏目树
Mar 16 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 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
2014/07/28 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
jquery 获取自定义属性(attr和prop)的实现代码
2012/06/27 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
js实现常用排序算法
2016/08/09 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
在微信小程序中使用vant的方法
2019/06/07 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
python 链接和操作 memcache方法
2017/03/04 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
python 默认参数相关知识详解
2019/09/18 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
党建示范点实施方案
2014/03/12 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
nginx rewrite功能使用场景分析
2022/05/30 Servers
使用HBuilder制作一个简单的HTML5网页
2022/07/07 HTML / CSS