0

1373623247 の Unix タイムスタンプを取得したとします。これで、タイムスタンプが X からわずか数秒であることを理解しました。問題は、そのフォーマットです。

私が使用するサーバーはドイツでホストされていますが、私は英国にいるため、出力は 12-07-13 12:01:01 ですが、実際にはここでは 11:01:01 しかありません。

私が使用しているコードは次のとおりです。

$date = 1373623247;
echo date("j-m-y h:i:s",$date);

私がしたことは、次のように date_create と timezone を使用することでした:

$date1 = date("j-m-y h:i:s",$date);
$dateobj = date_create("$date1", timezone_open('Europe/London'));
echo date_format($dateobj,"j-m-y h:i:s") . "\n";

私が今抱えている問題は、実際には日付が明日に調整されており、時刻が変更されていないことです!

4

1 に答える 1

2

dateまったく関与する必要はありません。

$date = 1373623247;
$dateobj = date_create_from_format("U", $date);
date_timezone_set($dateobj, timezone_open('Europe/London'));
echo date_format($dateobj,"j-m-y h:i:s") . "\n";

このコードは、フォーマット指定子DateTimeを使用して、タイムスタンプをインスタンスに直接変換します。サーバーのデフォルトのタイムゾーンをまったく気にする必要がないため、 を使用しない方が短くてきれいです。U date

プロのヒント:多くのカバレッジが得られdatestrtotime場合によっては非常に便利ですが、DateTimeすべてを単独で実行でき、IMHO の方がはるかに保守しやすいコードになります。

于 2013-07-12T10:14:15.087 に答える