当前位置: 首页 > 图文教程 > 网络编程 > PHP > 用PEAR Date进行日期时间处理

PHP
php 多线程上下文中安全写文件实现代码
PHP类的使用 实例代码讲解
用php实现让页面只能被百度gogole蜘蛛访问的方法
php 学习笔记
PHP编程过程中需要了解的this,self,parent的区别
php 操作excel文件的方法小结
使用PHP获取网络文件的实现代码
PHP 巧用数组降低程序的时间复杂度
php下将XML转换为数组
php 文件上传代码(限制jpg文件)
php 无极分类(递归)实现代码
PHP 采集获取指定网址的内容
PHP 将图片按创建时间进行分类存储的实现代码
PHP 存储文本换行实现方法
PHP 批量更新网页内容实现代码
用PHP查询搜索引擎排名位置的代码
用php实现的获取网页中的图片并保存到本地的代码
php实现首页链接查询 友情链接检查的代码
处理php自动反斜杠的函数代码
php实现的遍历文件夹下所有文件,编辑删除

PHP 中的 用PEAR Date进行日期时间处理


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 35 ::
收藏到网摘: n/a

  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->