如何从给定的W3C日期字符串创建新的DateTime实例?

时间:2014-03-12 10:51:40

标签: php datetime locale date-format date-formatting

我想创建一个DateTime对象,它还应该从给定的W3C日期字符串中设置正确的时区。 W3C日期的一个例子是:2014-03-12T09:30:04+0000

我搜索了很多内容并且无法找到解决方案。

到目前为止我得到的是:

$dt = new DateTime();
$dt->setTimestamp(strtotime('2014-03-12T09:30:04+0000'));
var_dump($dt);

但我认为这会忽略时区,不是吗?

2 个答案:

答案 0 :(得分:1)

你试过这个吗?

$dt = new DateTime('2014-03-12T09:30:04+0000');
print_r($dt);

我的输出:

DateTime Object
(
    [date] => 2014-03-12 09:30:04
    [timezone_type] => 1
    [timezone] => +00:00
)

所以,它可以节省时区,但你可能不会很好地解释输出;如果你想在当地时间打印,那么你必须进行一些转换。

答案 1 :(得分:1)

$dt = new DateTime('2014-03-12T09:30:04+0400');
var_dump($dt);

最后4个数字用于定义您的时区。

输出

object(DateTime)#1 (3) {
    ["date"]=>
    string(19) "2014-03-12 09:30:04"
    ["timezone_type"]=>
    int(1)
    ["timezone"]=>
    string(6) "+04:00"
}

总之,不会忽视时区。