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?
答案 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)
答案 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
}