是否可以从偏移量创建DateTimeZone?

时间:2012-12-28 11:08:03

标签: php datetime

DateTimeZone构造函数只接受区域名称:

new DateTimeZone('Europe/London');

而不是UTC的偏移量:

new DateTimeZone('+01:00'); // Unknown or bad timezone (+01:00)

但是,可以从DateTime

获得这样的DateTimeZone
(new DateTime('2012-12-28T00:00:00+01:00'))->getTimezone()->getName(); // +01:00

所以这有点奇怪。有没有办法从偏移量直接获取DateTimeZone?

4 个答案:

答案 0 :(得分:5)

除了Rafał's answer之外,我到目前为止找到的最简单的方法是:

DateTime::createFromFormat('O', '+01:00')->getTimezone();

修改

这是bug,已在PHP 5.5.10中修复。它现在有效!

答案 1 :(得分:1)

查看此功能。

http://pl1.php.net/manual/en/function.timezone-name-from-abbr.php

您需要将小时数转换为秒数并将其作为第二个参数传递。

STH。像new DateTimeZone(timezone_name_from_abbr('', 3600, 0))一样应该有用。

答案 2 :(得分:1)

现代回答:

new DateTimeZone('+0100');

文档:

  

http://php.net/manual/en/datetimezone.construct.php

答案 3 :(得分:0)

我不认为你有任何预定的方式去。但是,如果您声明任何全局函数将返回添加了偏移的日期和时间,它可能会对您有所帮助。 示例:

function getDateTime($format="dd-mm-YY"){

$currDate= date($format);

$currDate=date($format,strtotime("+1 day",$currDate); // or whatever needed instead of +1 day

}