0

我无法为我的 DateTime 对象设置时区。
这是我的代码:

$dt = DateTime::createFromFormat('U',time(),new DateTimeZone('Asia/Kolkata'));
print_r($dt->getTimeZone());

这是输出:

DateTimeZone Object
(
)

我还尝试将这些行放在顶部(一次一个) - 没有任何成功:

date_default_timezone_set('Asia/Calcutta');
ini_set('date.timezone', 'Asia/Calcutta');
date_default_timezone_set('Asia/Kolkata');
ini_set('date.timezone', 'Asia/Kolkata');
4

2 回答 2

5

这是因为您在参数中指定了 UNIX 时间戳。看看php 手册是怎么说的。

当 time 参数包含 UNIX 时间戳(例如 946684800)或指定时区(例如 2010-01-28T15:00:00+02:00)时,将忽略 timezone 参数和当前时区。

您尝试做的事情可以通过以下方式轻松完成,

$dt = new DateTime("now", new DateTimeZone('Asia/Kolkata'));

如果您有一个包含 UNIX 时间戳的变量,请首先使用它创建一个 DateTime 对象。然后设置新的时区。

$dt = new DateTime("@$timestamp");
$dt->setTimezone( new DateTimeZone('Asia/Kolkata'));

http://codepad.viper-7.com/topBCR

于 2013-01-28T08:26:34.300 回答
0

试试这个

<?php

$dateTimeZoneAsia = new DateTimeZone("Asia/Kolkata");
$dateTimeAsia = new DateTime("now", $dateTimeZoneAsia);
$timeOffset = $dateTimeZoneAsia->getOffset($dateTimeAsia);
var_dump($timeOffset);
?> 
于 2013-01-28T08:34:59.173 回答