1

PHPコードのstrtotimeにこの問題があり、時々(一部のタイムゾーンでのみ)間違っていて、他の人では正しいです!!

私はそれを理解することができません。

ページの上部にも を設定し<?php date_default_timezone_set('GMT'); ?>ましたが、役に立ちません!

基本的には、if および else if 条件offset/3600に応じて、設定された時間に値を加算または減算します。$time1 = strtotime('00:00');

オフセット/3660 値は、2 つのタイムゾーン間の時差です!

次のコードは、一部の場所では機能しますが、他の場所では機能しません! 基本的には、1 ~ 2 時間余分に追加されるか、1 ~ 2 時間余分に離陸/減算されることがあります (常にではありません)。

つまり、アビジャンとロンドンの時差は -1 です。表示される時間 (値) は、00:00 - 01:00 = 23:00 として 23:00 です。ただし、表示される値は 00:00 です。

ただし、前述したように、一部のタイムゾーンでは機能します。つまり、ニューヨークとロンドンの時差が -5 の場合、コードは機能し、19:00 が 00:00 - 05:00 = 19:00 として表示されます。

誰かがこれに光を当てることができますか?

問題のコードは次のとおりです。

<?php
$time1 = strtotime('00:00');

if (0 > $offset)
{
   // For negative offset (hours behind)
  $hour_dif = date('H:i', strtotime($time1 -$offset/3600));
  $time1 = "{$hour_dif}";
}
elseif (0 < $offset)
{
   // For positive offset (hours ahead)
     $hour_dif = date('H:i', strtotime($time1 +$offset/3600));
     $time1 = "{$hour_dif}";

}
else
{
   // For offsets in the same timezone.
   $time1 = "in the same timezone";
}

echo "{$time1}";
?>
4

1 に答える 1