3

次のコード:

    // settings 1st alternative
    $season = 2011;
    $startweek = 36;

    // calculation, 1st alternative
    // in any case Jan 1st is in 1. week
    $firstweekuniversal = mktime(0,0,0,1,4,$season);
    // I'd like to calculate monday 0:00 of the given week.
    // date(...) computes to monday of the calculated week.
    $startday1 = $firstweekuniversal + 86400 * (7*($startweek-1) - date('w', $firstweekuniversal)+1);

    // settings 2nd alternative
    $StartingDate = "KW36 - 5.09.2011 (Mo)";

    // calculation, 2nd alternative
    $firstparts = explode(" ", $StartingDate);
    $secparts = explode(".", $firstparts[2]);
    $startday2 = mktime(0,0,0,intval($secparts[1]),intval($secparts[0]),intval($secparts[2]));

    // Output
    echo "Start: \$startday1=".$startday1.", Timestamp=\"".date("d.m.Y - H:i:s", $startday1)."\"<br>\n";
    echo "Start: \$startday2=".$startday2.", Timestamp=\"".date("d.m.Y - H:i:s", $startday2)."\"<br>\n";

この出力につながります:

Start: $startday1=1315177200, Timestamp="05.09.2011 - 01:00:00"
Start: $startday2=1315173600, Timestamp="05.09.2011 - 00:00:00"

1時間の差はどこから?夏の問題ではありません。その場合、1h は逆でなければなりませんでしたか、それとも間違っていますか? 私の環境(localhost)で試しているときは違いはありませんが、私のプロバイダーのサーバーには違いがあります。

誰かが私にこれを説明できますか? 私はここで完全に困惑しています。前もって感謝します、

4

1 に答える 1

0

夏時間についての私の理解では、冬と夏の間の特定の時点で太陽が早く昇り始めているため、午前 8 時に午前 9 時のように感じるでしょう...そしてそれはまさに時計が行うことです。後で(通常は 1 時間)。これが、学校に遅刻する良い言い訳になる理由でもあります :)

いずれにせよ、ローカル PHP のタイムゾーン設定はおそらく UTC (または他の「ニュートラル」タイムゾーン) ですが、サーバーのタイムゾーン設定は夏時間を尊重します。

于 2012-08-30T17:26:25.777 に答える