3

に UNIX タイムスタンプがありPHPます:

$timestamp = 1346300336;

次に、適用したいタイムゾーンのオフセットがあります。基本的に、オフセットを適用して新しい UNIX タイムスタンプを返したいと考えています。オフセットは次の形式に従いますが、残念ながら他のコードとの互換性のために変更できません。

$offset_example_1 = "-07:00";
$offset_example_2 = "+00:00";
$offset_example_3 = "+07:00";

私は試した:

$new_timestamp = strtotime($timestamp . " " . $offset_example_1);

しかし、残念ながらこれは機能しませ:(。他のアイデアはありますか?

編集

テストした後、私は非常に驚きましたが、これでもうまくいきません:

strtotime("1346300336 -7 hours")

false を返します。

上記のオフセットの例を秒に変換する最良の方法は何ですか? その後、私は単に行うことができます$timestamp + $timezone_offset_seconds

4

3 に答える 3

6

元のタイムスタンプを2番目のパラメータとしてに渡す必要がありますstrtotime

$new_timestamp = strtotime("-7 hours", $timestamp);
于 2012-08-30T06:08:12.070 に答える
1

DateInterval を使用できます。

$t = 1346300336;
$date = DateTime::createFromFormat('Y-m-d', date('Y-m-d', $t));
$interval = DateInterval::createFromDateString('-7 hours'); 
$date->add($interval);

echo $date->getTimestamp();
echo $date->format('Y-m-d H:i:s');
于 2012-08-30T06:13:04.280 に答える
1
 $dt = new DateTime();
 $dt->setTimezone('GMT'); //Or whatever
 $dt->setTimestamp($timestamp);
 $dt->setTimezone('Pacific');
 //Echo out/do whatever
 $dt->setTimezone('GMT');

私はDateTimeクラスがとても好きです。

于 2012-08-30T05:45:31.837 に答える