1

ええ、私はあることを知っていますDateTimeZone::getTransitions()。しかし、私はその出力にちょっと混乱しました。私が期待するのは、次のようなリストです。

2013-03-31 03:00:00 -> 2013-03-31 04:00:00
2013-10-27 03:00:00 -> 2013-10-27 02:00:00

さらに、なぜ に関する情報が返されるのだろうか$timestamp_begin。通常、ユーザーはこのパラメーターに遷移タイムスタンプを渡しません。

4

1 に答える 1

2

Pekka 웃 の助けを借りて、次のスクリプトを作成しました。

date_default_timezone_set('America/Havana');
$transitions = (new DateTime)->getTimeZone()->getTransitions(
    strtotime('2013-01-01'),
    strtotime('2013-12-31'));
date_default_timezone_set('UTC');
for ($i = 1; $i < count($transitions); $i++)
        printf("%s -> %s\n",
            strftime("%F %T",
                $transitions[$i]['ts'] + $transitions[$i - 1]['offset']),
            strftime("%F %T",
                $transitions[$i]['ts'] + $transitions[$i]['offset']));
于 2013-05-31T18:30:03.977 に答える