2012-08-30 1 views
3

다음 코드를PHP mktime이 같은 날짜에 대해 다른 결과를 제공합니까?

// 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"; 

이 출력에 이르게 : 여기서 1 시간 차이에서 오는

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

? 그것은 여름철 문제가 될 수 없으며, 그 경우 1 시간은 다른 방향이어야합니다. 그렇지 않습니까? 내 환경 (localhost)으로 시도 할 때 차이점은 없지만 내 prvider의 서버에는 차이점이 있습니다.

누구든지 나에게 설명 할 수 있습니까? 나는 여기서 완전히 당혹 스럽다. 미리 감사드립니다.

+0

로컬 호스트와 서버의 시간대는 무엇입니까? –

+0

시간대는 유럽/베를린이지만 스크립트가 두 가지 대안을 모두 실행하기 때문에 관련성이 없어야하지 않습니까? –

+0

localhost 및 provider에서 실행중인 OS는 무엇입니까? 내 Ubuntu VM에서 실행했고 우분투 EC2 인스턴스에서와 똑같은 동작을 보았습니다. 아마 이상한 DST 설정과 관련이있을 수 있지만 어디서 찾을 수 없습니다. – Mikushi

답변

0

일광 절약 시간에 대한 나의 이해는 겨울과 여름 사이의 특정 시점에서 태양이 일찍 상승하기 시작하므로 오전 8시에 오전 9 시가되어야한다고 느낄 것입니다. 그리고 그것은 정확히 무엇입니까? 시계는 앞으로 나아가고 (일반적으로 한 시간 씩) 앞으로 나아 간다. 이것은 또한 학교에서 늦게 지내는 것이 좋은 이유입니다 :)

어쨌든 로컬 PHP의 시간대 설정은 아마도 UTC (또는 다른 "중성"시간대)이지만 서버 시간대 설정은 일광을 따릅니다 저금.

관련 문제