2014-09-06 4 views
-1

누군가 여기서 내게 무슨 일이 일어 났는지 설명 할 수 있습니까?DateTime을 다른 DateTime으로 변환

<?php 
$date= \DateTime::createFromFormat("H:i:s", "17:30:23"); 
var_dump($date); 
$date = new DateTime('@' . $date->format('U')); 
var_dump($date); 

출력 : 정확히 동일하므로

object(DateTime)#1 (3) { 
    ["date"]=> string(19) "2014-09-06 17:30:23" 
    ["timezone_type"]=> int(3) 
    ["timezone"]=> string(16) "Europe/Amsterdam" 
} 

object(DateTime)#2 (3) { 
    ["date"]=> string(19) "2014-09-06 15:30:23" 
    ["timezone_type"]=> int(1) 
    ["timezone"]=> string(6) "+00:00" 
} 

가 어떻게, 또 다른 하나의 날짜 시간에서 시간을 전송할 수 있습니까? 내가 사용해야하는 \DateTime을 확장하는 내 자신의 Date 클래스가 있기 때문에 물어 보지만 내 소스는 일반 \DateTime 개체입니다. 행동

: http://3v4l.org/uEQES#v530 당신은 그냥 같은 시간대에있을 귀하의 날짜 시간 객체를 변경해야

+0

* 유닉스 타임 스탬프는 UTC 항상 있기 때문에이 경우에는 내가, UTC를 사용 "\ DateTime을 확장하는 자체 Date 클래스가 있기 때문에 묻습니다."* - 다음에 표시해야합니다. 또한 그렇게 할 때 예상치 못한 부작용이있을 수 있습니다. –

+0

아무 것도하지 않습니다. 그냥'__toString()'메소드를 가지고있다. 어쨌든 중요하지 않습니다. 위의 예제는 표준'\ DateTime' 클래스를 사용하며 여전히 문제가 발생합니다. –

답변

2

.

$date= \DateTime::createFromFormat("H:i:s", "17:30:23"); 
$date->setTimezone(new DateTimeZone('UTC')); 
var_dump($date); 
$date = new DateTime('@' . $date->format('U')); 
var_dump($date); 

See it in action

당신이 당신의 시간대 사용을 다시 얻고 싶은 경우에 :

$date= \DateTime::createFromFormat("H:i:s", "17:30:23"); 
var_dump($date); 
$date = new DateTime('@' . $date->format('U')); 
$date->setTimezone(new DateTimeZone('Europe/Amsterdam')); 
var_dump($date); 

See it in action

+0

고마워요. 이제 더 이해가됩니다! –

관련 문제