2010-07-21 2 views
13

MySQL 데이터베이스에 PHP를 삽입하기 전에 날짜와 시간을 PHP를 사용하여 타임 스탬프로 변환하고 있습니다.PHP strtotime() 함수가 1 시간 잘못 되었습니까?

제 문제는 PHP의 strtotime 함수를 사용할 때 출력 타임 스탬프가 실제 시간보다 -1 시간 늦었습니다.

예를 들어 오늘 날짜를 생각해 보면 : 07/21/2010입니다. 내가 같은 PHP 코드를 사용하면 :

<?php 
$my_timestamp = strtotime("07/21/2010"); 
echo $my_timestamp; 
?> 

보내진 타임 스탬프는 GMT equivilent MINUS 1 시간입니다. 즉 2010 년 7 월 20 일 23:00:00 GMT 대신 2010 년 7 월 21 일 00:00:00 GMT로 돌아옵니다.

나는 영국에 거주하므로 시간대는 GMT입니다. date_default_timezone_set ('Europe/London')을 사용하여 스크립트에서 내 시간대를 선언했으며 php.ini 파일이 'Europe/London'으로 설정되도록했습니다.

아마도 일광 절약 시간과 관련이 있습니까? 내 모든 날짜에 1 시간을 추가하지 않고 문제를 해결하려면 어떻게해야합니까?

+0

날짜에 1 시간을 추가하기 만하면 타임 스탬프에 3600을 더한다 (3600 초 = 1 시간) – NullUserException

+13

시간대는 GMT가 아니며, 영국은 여름철에 GMT +1입니다. – nos

+2

@nos 그것을 대답으로 추가하십시오, 나는 그것이 올바른 것 같아요. –

답변

26

일광 절약 시간제 유럽/런던 시간은 GMT 시간이 아닙니다. UTC로 설정해야합니다. 케네스 아래,이되지 않습니다 코멘트에서 노트로

date_default_timezone_set('GMT');

date_default_timezone_set('UTC');

는 작동하지만 수 있습니다. 추가 또는 차감 경우

+3

주의 : 그리니치 표준시는 최신 PHP 버전에서 감가 상각되었으므로 일시적으로 지원되는 중이며, – Kenneth

+1

@Kenneth 메모를 추가했습니다. 감사합니다! – Yahel

-9

는 PHP 5.3 전에 strtotime 시간을 계산하는 문제가 있었다 당신이 지금 알 수 있도록 고정 등 월과 일이 특별히 당신은 당신이 PHP 5.3 이하 경우에 나는 일을 추천 할 것입니다 계산 방법을 mysql에서 계산하는 날짜 또는 PHP 버전을 업그레이드하십시오.

+1

"도청"된 PHP의 날짜와 시간 함수를 이해하지 못했습니다? –

+0

";?> 시도해주세요. –

+1

@Android Noob 나는 일하기를 원할 것입니다 .1 달은 고정 된 측정 단위가 아닙니다. 일을하는 다른 strtotime() 해석 (+1 일, +1 주)과 달리 월에 따라 28 일, 29 일, 30 일 또는 31 일이 될 수 있습니다. 아이가 발생합니다. (즉, 나는 유권자 중 한 명이 아니다). – Yahel

1

런던 표준 시간대는 여름철 영국령 서머 타임으로 표시됩니다. 그런데 UTC로 시간을 저장하고 UTC 또는 현지 시간으로 최종 사용자에게 시간을 제시하는 것이 좋습니다.

시스템 시간이 UTC인지 확인하는 것이 좋습니다.