PHP时间处理类操作示例


Posted in PHP onSeptember 05, 2018

本文实例讲述了PHP时间处理类操作。分享给大家供大家参考,具体如下:

php中的几个时间处理类:DateTime,DateTimeZone,DateInterval,DatePeriod。

  • DateTime :时间类
  • DateTimeZone:时区内
  • DateInterval:表示一段时间间隔,它是时间对象做加减法的单位。
  • DatePeriod:表示一段时间集合。结合DateInterval可对集合内的时间遍历处理。

下面是这几个类的具体使用例子:

<?php
function showTimeObj($msg,$timeObj)
{
  //使用预定义的格式来转换时间字符串
  if ($msg!=NULL)
  {
    echo $msg.":";
    echo "<br>".$timeObj->format(DATE_W3C)."<br>";
  }
  else
  {
    echo $timeObj->format(DATE_ATOM)."<br>";
  }
}
try
{
  //设置时区
  $timezones = new DateTimeZone('Asia/Shanghai');
  //获取当前时间
  $timeObj=new DateTime("now",$timezones);
}
catch (Exception $e)
{
  echo $e->getMessage();
}
//输出的+08:00代表东八区、若把时区设为'Asia/Tokyo',则为+09:00
showTimeObj('current time',$timeObj);
echo "<br>"."<br>";
echo "use DateInterval object to add date time".":"."<br>";
//加上一天(P=period,必备)
$timeObj->add(new DateInterval('P1D'));
showTimeObj('current time + 1 day',$timeObj);
//加上一小时(T=time,可选)
$timeObj->add(new DateInterval('P0DT1H'));
showTimeObj('current time + 1 day & 1hour',$timeObj);
echo "<br>"."<br>";
echo "use DatePeriod to process time range like a iterator".":"."<br>";
//DatePeriod: 迭代处理区间内的日期
$interval= new DateInterval('P0DT2H');
$start = new DateTime('2018-08-08',$timezones);
$end = new DateTime('2018-08-09',$timezones);
$timeRange = new DatePeriod($start,$interval,$end);
foreach ($timeRange as $hour)
{
  showTimeObj(NULL,$hour);
}
?>

上述代码运行结果:

current time:
2018-09-04T15:23:46+08:00

use DateInterval object to add date time:
current time + 1 day:
2018-09-05T15:23:46+08:00
current time + 1 day & 1hour:
2018-09-05T16:23:46+08:00

use DatePeriod to process time range like a iterator:
2018-08-08T00:00:00+08:00
2018-08-08T02:00:00+08:00
2018-08-08T04:00:00+08:00
2018-08-08T06:00:00+08:00
2018-08-08T08:00:00+08:00
2018-08-08T10:00:00+08:00
2018-08-08T12:00:00+08:00
2018-08-08T14:00:00+08:00
2018-08-08T16:00:00+08:00
2018-08-08T18:00:00+08:00
2018-08-08T20:00:00+08:00
2018-08-08T22:00:00+08:00

PHP 相关文章推荐
56.com视频采集接口程序(PHP)
Sep 22 PHP
PHP 解决utf-8和gb2312编码转换问题
Mar 18 PHP
深入extjs与php参数交互的详解
Jun 25 PHP
PHP抓屏函数实现屏幕快照代码分享
Jan 02 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
Aug 20 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
ThinkPHP文件上传实例教程
Aug 22 PHP
PHP转盘抽奖接口实例
Feb 09 PHP
浅谈php提交form表单
Jul 01 PHP
php接口技术实例详解
Dec 07 PHP
PHP+ajax实现获取新闻数据简单示例
May 08 PHP
PHP命名空间与自动加载类详解
Sep 04 #PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 #PHP
php 后端实现JWT认证方法示例
Sep 04 #PHP
PHP利用Mysql锁解决高并发的方法
Sep 04 #PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
Sep 03 #PHP
PHP实现的AES双向加密解密功能示例【128位】
Sep 03 #PHP
PHP实现的日历功能示例
Sep 01 #PHP
You might like
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
js的2种继承方式详解
2014/03/04 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
2014/04/03 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
JS操作COOKIE实现备忘记录的方法
2016/04/01 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
python检测IP地址变化并触发事件
2018/12/26 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
python实现网站微信登录的示例代码
2019/09/18 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
个人校本研修方案
2014/05/26 职场文书
免职证明样本
2014/10/23 职场文书
幼儿教师个人总结
2015/02/05 职场文书
任命书怎么写
2015/03/02 职场文书
诉讼和解协议书
2016/03/23 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
Go归并排序算法的实现方法
2022/04/06 Golang
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle