0

DateTime オブジェクトのタイムゾーンを設定できません。
これが私のコードです:

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

出力は次のとおりです。

DateTimeZone Object
(
)

また、これらの行を (一度に 1 つずつ) 一番上に配置しようとしましたが、成功しませんでした:

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マニュアルの内容を参照してください。

タイムパラメータにUNIXタイムスタンプが含まれている場合(例:946684800)、またはタイムゾーンを指定している場合(例:2010-01-28T15:00:00 + 02:00)、タイムゾーンパラメータと現在のタイムゾーンは無視されます。

あなたがやろうとしていることは、次の方法で簡単に行うことができます。

$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 に答える