APIからUnix,UTCで時刻取得する機会があったのですがどうやってもJSTに変換できなかったので成功例の記録。
(特にレンタル)サーバーの設定によらず正しい時刻を表示する方法を紹介します。
Apache2.0 PHP5.6.10で動作確認
#目標の動作
例として$utc = 1443576433
を使用。
echo date('Y/m/d H:i', $utc);
とすると
2015/09/30 03:27
と出力されました。これをJST変換して
2015/09/30 10:27
となることを目指します。
##注意:サーバーの問題点
PHPを触ったことある方、UTCに詳しい方ならすぐ異変に気づくはずです。
(時差が9時間でない)
調べてところApacheのTimeZoneがEurope/Berlinでした。
初期設定が変だったのでしょう。
#解決策
DateTimeクラスを使います。
success.php
<?php
$time = new DateTime();
$time->setTimestamp($utc)->setTimezone(new DateTimeZone('Asia/Tokyo'));
echo $time->format('Y/m/d H;i');
DateTimeZoneクラスで目的のタイムゾーンを作り、setTimeZoneの引数にします。