首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | linux相关 | linux认证 | 下载中心 | 专题
oklinux
 系统管理:中文环境 系统管理 桌面应用 内核技术 Linux基础:安装配置 常用命令 经验技巧 软件应用 Linux数据库:Mysql POSTGRE
 网络管理:网络安全 网络应用 Linux服务器 编程开发:PHP CC++ Python Perl SHELL 嵌入式开发 | PHP基础 PHP技巧 PHP应用 PHP文摘
 首页 linux资讯动态 Linux专题 | 其他Unix Linux解决方案 硬件相关 Linux认证 企业应用 Apache | 相关下载:资料 参考手册 服务器
 → 当前位置:首页>mytest>temp>正文

用PEAR Date类对日期和时间进行处理

OKLinux www.oklinux.cn 2006-10-10 来源:oklinux收集整理 会员收藏 游客收藏

  PHP内置了日期和时间的处理函数, 这些设计使你很容易得得到您所需要的格式, 或者使用它进行演算或对用户进行显示。但是, 如果您会想做某事被复杂化, 有很多种方法的。

  这是一个在网页中显示时间的简单例子。使用 PHP的date()函数可以读取服务器的时间和以一个具体格式显示时间。但如果您想显示时间在一个另外地点- 例如, 如果您的公司们于不同的国家,但您想从位于一个另外国家的服务器上想看到"家" 时间,而不是当地时间? 当然, 您必须计算出二个地方的时差然后执行一些日期算术调整为不同的时区。时差是很重要的, 您需要考虑到使用前一天新时间还是使用以后的时间, 记录结束这月和闰年限制。

  和你想像的一样, 如果算术能迅速得到非常复杂的时区转换,何必要您手工做它。PHP 有自带的时区功能函数, 但这些不是特别直觉的,并且不太符合时间习惯。一个更快的选择使用PEAR日期处理功能来简单的对时区执行这些转换。

  这个讲解将教您怎么用PEAR的日期功能来转换在时区之间转换时间。假设, 您已经运行了Apache 和 PHP 并且PEAR日期功能正确地被安装了。


  开始
  我们从基本开始- 创建和使用Data对象。创造一个PHP 脚本来运行以下代码:

  例子A
<?php
//包括类
include("Date.php");

//初始化对象
$d = new Date("2006-06-21 15:45:27");

//检索日期
echo $d->getdate();
? >

这相当简单- 包含类, 初始化一个 Date() 对象与日期/时间串, 和然后使用 getDate() 方法显示您插入的时间。下面是输出:
2006-06-21 15:45:27

  您若想要得到不同格式的日期呢? 如果格式依是标准的, 譬如ISO 格式, 简单地使用 getDate()加参数来完成就行了。

  例子B
<?php
//包括类
include("Date.php");

//初始化对象
$d = new Date("2006-06-21 15:45:27");

//检索日期作为时间戳
echo  $d->getdate(DATE_FORMAT_ISO_BASIC);
? >
这种情况下依照标准ISO 格式输出时间,结果如下。
20060621T154527Z

如果您会使用一个自已习惯的格式, 您可以使用 format() 方法。PHP 的 date() 函数一样, 这个方法接受表明的一系列的格式,这些格式用来指定怎么对日期进行格式化。 下面是一个例子:

  例子C
<?php
//包括类
include("Date.php");

//初始化对象
$d = new Date("2006-06-21 15:45:27");

//检索日期如同格式化的串
echo $d->format("%A, %d %B %Y %T");
? >
输出结果如下:

Wednesday, 21 June 2006 15:45:27

  在时区之间转换
  现您已掌握了一些基本的, 现在我们来谈论时区。一旦您使用一个 Date() 对象初始化, 转换从一个时区到另一个时区只需要简单的二步:

1.告诉Date对象您从哪个时区转换, 使用 setTZByID() 方法。
2.然后, 告诉Date对象您希望转换成哪个时区, 以 convertTZByID() 方法。

  例子D
<?php
//包括类
include("Date.php");

//初始化对象
$d = new Date("2006-06-21 10:36:27");

//设置要转换时区
$d->settzbyid("GMT");

//转换到设置的时区
$d->converttzbyid("IST");

//得到转换的日期/时间
echo $d->format("%A, %d %B %Y %T");
? >

  在这个例子中, 我试图从格林威治标准时间(格林维志时间) 转换成印第安标准时间(IST) 。印度时间大约在格林威治时间5.5 小时之前, 为什么例子输出的结果是:

Wednesday, 21 June 2006 16:06:27
很简单, 不是吗? 下面是另外一个例子(例子E)将展示如果处理闰年和月。

   例子E
<?php
//包括类
include("Date.php");

//初始化对象
$d = new Date("2008-03-01 06:36:27");

//设置当地时区
$d->settzbyid("GMT");

//输出当地时间
echo "当地时间是".$d->format("%A, %d %B %Y %T") ."\n";

//转换成目的时区
$d->converttzbyid("PST");

//得到转换的日期/时间
echo "目的地时间是".$d->format("%A, %d %B %Y %T");
? >

输出结果是:

当地时间是Saturday, 01 March 2008 06:36:27
目的地时间是Friday, 29 February 2008 22:36:27

计算格林维志时间时差
有时我们需要计算与格林时间的时差, 通过Date的getRawOffset() 方法可以实现。下面是一个例子:

  例子F
<?php
//包括类
inclue("Date.php");

//初始化对象
$d = new Date("2006-06-21 10:36:27");

//设置当地时区
$d->settzbyid("PST");

//得到未加工的与格林维志时间的时差,单位是毫秒
echo $d->getrawoffset(>);
? >
这里, getRawOffset() 方法计算在当地时间和格林维志时间之间的时差。输出为:

-28800000
注意这时间差单位为毫秒, 因此您将需要由 3600000 (毫秒的数量在一个小时)为一小时来计算时差在几小时。

增加和减去时间-Date_Span
Date类可以让您方便的对时间进行计算,对日期/时间增加或减去时间。这些时间(或timespans)包含天、小时、分钟被表达作为串 下面是一个简单的例子:

  例子G
<?php
//包括类
include("Date.php");

//初始化对象
$d = new Date("2006-06-21 15:45:27");

//加01:20
$d->addSpan(new Date_Span("0,1,20,0"));

//得到格式化的字符串
echo $d->format("%A, %d %B %Y %T");
? >
在这个例子中, 我为最初的时间戳增加了一小时二十分钟, 使用Date的 addSpan() 方法和初始化后的Date_Span()对象来进行操作。结果相当容易猜测:

Wednesday, 21 June 2006 17:05:27
正如您能增加timespans, 也能减去他们。那, 实际上, 是subtractSpan () 方法可以达到这个目的 , 下面是其例子。

  例子H
<?php
//包括类
include("Date.php");

//初始化对象
$d = new Date("2006-06-21 15:45:27");

//为时间加01:20
$d->addSpan(new Date_Span("0,1,20,0"));

//减去00:05
$d->subtractSpan(new Date_Span("0,0,5,0"));

// 输出格式化的串
echo $d->format("%a, %d %B %Y %T");
? >

这里, 我首先增加了一小时二十分钟, 和然后减去了五分钟。实际影响是一小时十五分钟的加法, 并且输出结果为:

Wednesday, 21 June 2006 17:00:27

正象上面的例子一样, PEAR 的 Date 类提供了直觉高效处理复杂日期的功能。如果您正在寻找一个在不同的地点之间转换时间戳的免费类,那么我热诚地把它推荐给您。关注一下,编程快乐!

上一篇:PHP开发中最常见的文件操作疑难解答   下一篇:在JSP编译的时候,服务器内部做了什么?

收藏于收藏夹】 【评论】 【推荐】 【投稿】 【打印】 【关闭

相关文章
·在JSP编译的时候,服务器内部做了什么?
·LOG4J快速入门及参考资料
·谈谈Unicode编码,简要解释UCS、UTF、BMP、
·XML相关的技术
·如何定制和构建基于开源框架的CMS
·进行有效编辑的七种习惯
·Resin官方中文资料
·快速应用JDBC控件访问数据库资源
·Linux下增加Apache的rewrite Module
·如何用Delphi开发简单的WebMail程序
发表评论
密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。)
站内搜索
阅读排行榜
·使用php 5时MySQL返回乱码
·如何在tomcat配置web在线
·java web 开发必游之路
·如何定制和构建基于开源框
·Linux下PHP连接MS SQLServ
·SAX读取Yahoo Service天气
·PHP_字符串操作入门教程
·为项目自动添加构建路径
·ZendCache使你的站点飞起
·JSP/Servlet/JSF:标签库的
最新文章
·如何利用MySQL加密函数保
·Resin官方中文资料
·进行有效编辑的七种习惯
·XML相关的技术
·谈谈Unicode编码,简要解
·LOG4J快速入门及参考资料
·在JSP编译的时候,服务器
·快速应用JDBC控件访问数据
·如何定制和构建基于开源框
·Linux下增加Apache的rewri
·如何用Delphi开发简单的We
·Eclipse 3.0 上配置JSP开
·有关JSP/Servlet的重定向
·JSP/Servlet/JSF:标签库的
·提升JSP应用程序七大绝招

设为首页 - 加入收藏 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2007 All rights reserved OKLinux.Cn 版权所有