如何使用PHP和PEAR进行不同时区的转换

2016-01-29 13:23 7 1 收藏

如何使用PHP和PEAR进行不同时区的转换,如何使用PHP和PEAR进行不同时区的转换

【 tulaoshi.com - PHP 】

    PHP具备一系列日期和时间函数,这为您获取时间信息提供了便利,您可以将这些信息转换为需要的格式并用于计算或者展示给用户。但是如果您想实现一些复杂的功能,事情可能会变得非常复杂。

    一个简单的例子是在网页上显示时间。在PHP中,您可以简单地使用data()函数读取服务器的时钟并以指定的格式进行显示;但是如果您所要显示的时间是不同时区的,比如,您的公司和服务器位于不同的国家,您需要看到的是本地时间而不是当地时间。

    因此,您需要计算出两地的时差,并进行一些计算从而在不同的时区中进行调整,如果时差很重要,您还需要考虑到日期变更、夏令时、月底的最后一天以及闰年的限制等等。

    正如您想像的一样,如果您手动完成这些时区的数学计算,那么这很快就会变成一件很复杂的事情。幸好,PHP内建的时区函数可以帮助解决这一问题,但这些函数并不直观,需要一些时间来熟悉它们的使用。当然,更加快捷的一个选择是使用PEAR的Date类库,它具备对时区的内建支持,而且到目前为止,这是进行时区转换的最简便的方法。

    这篇指南将向您讲解如何使用PEAR的Date类在不同的时区中进行不同的时间数值转换。我假定您已经安装了Apache、PHP以及PEAR的Date类库并且它们都能正常工作。

    注意:您可以直接从互联网上安装PEAR的Date类库,您可以下载或使用它提供的指南进行安装。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

开始

    让我们从基础的初始化和使用Date对象开始讲解,请创建列表A中的PHP代码:

<?php
// include class
include ("Date.php");

// initialize object
$d = new Date("2006-06-21 15:45:27");

// retrieve date
echo $d-getDate();
?

    这个例子非常简单,它所包含的类代码使用一个日期/时间字符串初始化了一个Date()对象,然后使用getDate()方法来展示您插入的数值,以下是输出的结果:

    2006-06-21 15:45:27

    如何以不同格式来显示日期呢?如果是一个标准格式,比如ISO格式,那只需要向getDate()传递一个修饰符来指明即可,代码如列表B所示:

<?php
// include class
include ("Date.php");

// initialize object
$d = new Date("2006-06-21 15:45:27");

// retrieve date as timestamp
echo $d-getDate(DATE_FORMAT_ISO_BASIC);
?

    这个例子的输出符合标准的ISO格式。

    20060621T154527Z

    如果需要自己定制的格式,您可以使用format()方法来实现这一点,它和PHP的原有的date()函数一样,format()方法可以接收一系列格式定义符来指明日期每个部分的具体格式。列表C展示了使用format()方法的例子(您可以参考类文档来获取格式定义符的完整列表)。

<?php
// include class
include ("Date.php");

// initialize object
$d = new Date("2006-06-21 15:45:27");

// retrieve date as formatted string
echo $d-format("%A, %d %B %Y %T");
?

    输出的结果如下:

    Wednesday, 21 June 2006 15:45:27

时区间进行转换

    现在您已经了解了基本的使用方法,下面让我们来讨论时区的问题,一旦您拥有了初始化的Date()对象,转换时区的工作就可以分为两个简答的步骤:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

    使用setTZByID()方法告知Date类从哪个时区进行转换;
    然后,使用convertTZByID()方法告知Date类您所转换的目标时区。 

    列表D展示了这部分代码:

<?php
// include class
include ("Date.php");

// initialize object
$d = new Date("2006-06-21 10:36:27");

// set local time zone
$d-setTZByID("GMT");

// convert to foreign time zone
$d-convertTZByID("IST");

// retrieve converted date/time
echo $d-format("%A, %d %B %Y %T");
?

    在这个例子中,我将格林威治标准时间(GMT)转换为印度标准时间(IST),印度时间比格林威治时间早5.5小时,因此该脚本输出的结果是:

    Wednesday, 21 June 2006 16:06:27

    是不是很简单?以下列表E的例子展示了如果处理

来源:http://www.tulaoshi.com/n/20160129/1490022.html

延伸阅读
标签: PHP
下面是模版式的HMTL代码,保存在 Todo/Entry/templates/index.chunk;  <html   <body     <form name="entry" method="post"       <h3Create Entry</h3       <p       &nbs...
标签: PHP
  WASP(PHP网站程序结构) 是建立在PHP5上的第三方框架。最近很多软件开发工程师都从像JAVA 和C#企业级的语言转向了像 Python ,Ruby 和PHP的语言。随着PHP5的发布,PHP达到了开发者可以自由自在进行开发的水平,被认为是一种黑客语言(工作方式就像黑客工作一样自由)。通过证明,在PHP5环境中企业-类框架可以被创建并能在复...
标签: PHP
       及时交付应用程序是确定解决方案采用何种技术的关键所在,PHP借助于PEAR(PHP Extension and Application Repository:PHP扩展与应用库)会大大促进其开发过程。PEAR是一种代码库,它为标准程序功能提供预先编写的类,从而大大降低了应用程序的开发时间。PEAR在概念上类同于Perl的CPAN,PE...
UML 是一个通用的语言。使用 IBM? Rational Software Architect 和 IBM Rational Systems Developer,您可以实现由 UML 模型向 C++ 的转换。这篇文章讨论了如何更好地控制由 UML 向 C++ 转换而生成的 C++ 代码。文章分成几个章节,各部分相对独立,分别介绍了一种技巧。您可以根据需要选读,而不必遵循特定的次序。 应用 C++ Transfo...
标签: PHP
PHP 通常被安装在 Linux/Unix 操作系统上,并且搭配 Apache 服务器一起使用。在将 PHP 与 Apache 服务器一起安装的时候,你有三种不同的安装方式可以选择:静态模块,动态共享 对象 (Dynamic Shared Object, DSO)以及 CGI 程序执行文件。 在这里我建议大家使用动态共享对象的模式来安装 PHP,这是因为这种安装...

经验教程

817

收藏

78
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部