2013-07-12 4 views
0

유닉스 타임 스탬프 1373623247이 있다고 가정 해 봅시다. 이제는 X 이후로 타임 스탬프가 단 몇 초 밖에 걸리지 않는다는 것을 알았습니다. 문제는 포맷입니다.시간대가있는 Unix 타임 스탬프 형식?

내가 사용하는 서버는 독일에서 호스팅되지만 영국에서는 12-07-13 12:01:01입니다. 실제로는 11:01:01 일뿐입니다.

내가 사용하고있는 코드는 다음과 같습니다 :

$date1 = date("j-m-y h:i:s",$date); 
$dateobj = date_create("$date1", timezone_open('Europe/London')); 
echo date_format($dateobj,"j-m-y h:i:s") . "\n"; 

내가 지금 가지고있는 문제는 실제로 날짜를 조정 점이다 다음과 같이 내가 무슨 짓을

$date = 1373623247; 
echo date("j-m-y h:i:s",$date); 

가 사용 date_create 및 시간대이었다 내일까지, 그리고 시간을 변경하지 않았습니다!

+0

[date_default_timezone_set] (http://php.net/manual/en/function.date-default-timezone-set.php)을 사용하여 시간대를 설정하십시오. – Rikesh

+0

내일은 안오고있어. '12-07-13'은'2012-07-13'로 분석된다. –

답변

2

당신은 모든 date을 포함 할 필요가 없습니다 :

$date = 1373623247; 
$dateobj = date_create_from_format("U", $date); 
date_timezone_set($dateobj, timezone_open('Europe/London')); 
echo date_format($dateobj,"j-m-y h:i:s") . "\n"; 

이 코드는 Uformat specifier를 사용하여 DateTime 인스턴스에 직접 타임 스탬프를 변환합니다. date으로 작업하지 않는 것이 더 짧고 깨끗합니다. 서버의 기본 시간대를 전혀 신경 쓰지 않아도됩니다.

프로 팁 : datestrtotime은 많은 혜택을 얻었으며 특정 경우 매우 편리하지만 DateTime은 모든 것을 자체적으로 수행 할 수 있으며 IMHO 결과는 훨씬 더 유지 관리가 쉬운 코드로 나타납니다.

+0

감사합니다. 이제는 그리니치 표준시와 영국 서머 타임에 관한 문제입니다 ... – K20GH

+0

@ K20GH : 방금 그 사실을 깨닫고 반영하도록 편집했습니다. 올바른 일은 타임 스탬프를 파싱하여 런던의 현지 시간으로 간주하기를 원합니다. – Jon

+0

그게 효과가! 고맙습니다! – K20GH