2010-02-18 67 views
2

我试图使用PHP将RFC时间戳转换为友好日期。这里的例子:在PHP中将时区偏移转换为友好名称

Wed, 17 Feb 2010 19:44:01 -0500 

我想这是打印为:

Wed, 17 Feb 2010 19:44:01 EST 

使用date()+的strtotime()似乎并没有这样的伎俩,因为它转换为服务器时区(在我的案例PST)。

是否有一种简单的方法可以对所有GMT偏移量执行此操作?似乎必须有。

回答

0

使用date功能随着strtotime例如是这样的:

print date("format-here", strtotime("Wed, 17 Feb 2010 19:44:01 -0500")); 

注:的strtotime功能需要适当/接受的日期字符串。

如果你需要转换为本地时间,请参阅以下链接:

http://www.askdavetaylor.com/how_do_i_get_local_time_with_the_php_time_function.html

http://php.net/manual/en/function.localtime.php

+0

使用date()+ strtotime()似乎并没有诀窍,因为它将它转换为服务器的时区(在我的情况下是PST)。 – 2010-02-18 04:31:58

+0

@Silber:查看我的答案已更新。 – Sarfraz 2010-02-18 04:35:25

1

看到strototime()date()

echo date('D, j M Y G:i:s T', strtotime('Wed, 17 Feb 2010 19:44:01 -0500)); 
//Wed, 17 Feb 2010 19:44:01 EST 

更新:要设置时区看到date_timezone_set() 。如果您需要根据字符串中的偏移量设置时区,则可能需要进行一些解析。对于一些帮助,请参阅date_parse_from_format()和相关函数getdate(),date_parse()等。http://us2.php.net/manual/en/ref.datetime.php

+0

使用date()+ strtotime()似乎没有办法,因为它将它转换为服务器的时区(在我的情况下是PST)。 – 2010-02-18 04:31:34

+0

查看我的更新关于'date_parse_from_format()' – 2010-02-18 04:35:35

0

问题是,当EST等于UTC - 5小时时,-0500也可能表示其他时区,例如CDT,这是夏令时期间的中央时区。

所以简单地说,没有一对一的映射。除了时区偏移之外,您还需要知道位置以确定友好名称。这就是为什么操作系统在设置时区时要求您为您的城市提供服务的原因。