总结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和XSS跨站攻击的防范
Apr 17 PHP
php下intval()和(int)转换使用与区别
Jul 18 PHP
window+nginx+php环境配置 附配置搭配说明
Dec 29 PHP
PHP防CC攻击实现代码
Dec 29 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
php中的Base62类(适用于数值转字符串)
Aug 12 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
PHP网站开发中常用的8个小技巧
Feb 13 PHP
PHP时间戳和日期相互转换操作实例小结
Dec 18 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 PHP
PHP设计模式之命令模式示例详解
Dec 20 PHP
PHP变量的作用范围实例讲解
Dec 22 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
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
JavaScript对象、属性、事件手册集合方便查询
2010/07/04 Javascript
事件模型在各浏览器中存在差异
2010/10/20 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
如何在Angular2中使用jQuery及其插件的方法
2017/02/09 Javascript
详解vue中组件参数
2018/07/09 Javascript
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
Python简单日志处理类分享
2015/02/14 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
Python反转序列的方法实例分析
2018/03/21 Python
python实现控制台打印的方法
2019/01/12 Python
python tornado使用流生成图片的例子
2019/11/18 Python
基于python实现学生信息管理系统
2019/11/22 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
科长竞争上岗演讲稿
2014/05/12 职场文书
社区健康教育工作方案
2014/06/03 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
四风对照检查材料范文
2014/09/27 职场文书
花田少年史观后感
2015/06/16 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js