总结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中使用反射技术的架构插件使用说明
May 18 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 PHP
PHP Curl多线程原理实例详解
Nov 06 PHP
thinkphp实现数组分页示例
Apr 13 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
smarty中post用法实例
Nov 28 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
php上传图片类及用法示例
May 11 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
Jun 15 PHP
yii2学习教程之5种内置行为类详解
Aug 03 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
May 31 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
Jun 20 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
php学习之 循环结构实现代码
2011/06/09 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
Javascript继承机制的设计思想分享
2011/08/28 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
javascript读写json示例
2014/04/11 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
Python实现购物车功能的方法分析
2017/11/10 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
介绍一下HTTP、HTTPS和SSL
2012/12/16 面试题
采购主管岗位职责
2014/02/01 职场文书
2014年端午节活动方案
2014/03/11 职场文书
小学生作文批改评语
2014/12/25 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
求职自荐信怎么写
2015/03/04 职场文书
初中毕业生感言
2015/07/31 职场文书
2019事业单位个人工作总结范文
2019/08/26 职场文书