2012-12-18 3 views
3

아래 코드에서 2 국가 시간대에 대해 unixtimestamp를 얻어야합니다. 코드의 출력은 나에게 차이가있는 날짜를 알려주지 만 타임 스탬프는 서로 다르지 않습니다. 그것은 동일하게 유지됩니다. 누구든지 다른 시간대에 대해 다른 타임 스탬프를 얻을 수있는 솔루션을 제공 할 수 있습니까? 미리 감사드립니다.PHP의 다른 시간대에 대한 타임 스탬프

date_default_timezone_set('Asia/Calcutta'); 
echo date("Y-m-d H:i:s")."<br/>"; //2012-12-18 12:12:12 
echo strtotime(date("Y-m-d H:i:s",time()))."<br/>"; //1355812934 

date_default_timezone_set('Europe/London'); 
echo date("Y-m-d H:i:s")."<br/>"; //2012-12-18 06:12:12 
echo strtotime(date("Y-m-d H:i:s",time()))."<br/>"; //1355812934 
+0

timestamp가 계속되면 행성의 모든 장소에서 시간대와 관련이 없으며 항상 동일합니다. – zerkms

+1

"다른 사람이 다른 시간대에 대해 다른 타임 스탬프를 얻을 수있는 솔루션을 제공 할 수 있습니까?" --- 이것은 잘못된 질문입니다. ** 원래 ** 작업은 무엇입니까? – zerkms

+0

다른 시간대를 기반으로 php unixtimestamp를 사용하여 servertime을 표시해야합니다 (아약스 요청을 사용하지 않음). – shyammtp

답변

3

은 당신이 시간대는 date("Z")를 사용하여 오프셋 초 얻을 수 있습니다. 필요에 따라 계산하십시오.

date_default_timezone_set('Asia/Calcutta'); 
echo 'Local time : '.date("r").'<br>'; // local time 
echo 'Offset : '.date("Z").'<br>'; // time zone offset from UTC in seconds 
echo 'UTC Time : '.date('r', strtotime(date("r")) + (date("Z")*-1)); echo '<br><br>'; // this is UTC time converted from Local time 

date_default_timezone_set('Europe/London'); 
echo 'Local time : '.date("r").'<br>'; // local time 
echo 'Offset : '.date("Z").'<br>'; // time zone offset from UTC in seconds 
echo 'UTC time : '.date('r', strtotime(date("r")) + (date("Z")*-1)); echo '<br><br>'; // this is utc time converted from Local time 

는 출력 :

Local time : Tue, 18 Dec 2012 10:53:07 +0530 
Offset : 19800 
UTC Time : Tue, 18 Dec 2012 05:23:07 +0530 

Local time : Tue, 18 Dec 2012 05:23:07 +0000 
Offset : 0 
UTC time : Tue, 18 Dec 2012 05:23:07 +0000 
+0

고마워요. 제가 정확히 필요한 것을 얻었습니다. :-) – shyammtp

+0

[PHP 시간대] (https://secure.php.net/manual/en/timezones.php) –

2

이 작동합니다, 나는 PHP는 DataTimeZone 클래스를 사용하는 원래의 방법을 변경했습니다. 시도해 보시고 따르기가 쉬워야합니다 :

$dateTimeZoneCalcutta = new DateTimeZone("Asia/Calcutta"); 
$dateTimeCalcutta = new DateTime("now", $dateTimeZoneCalcutta); 
$calcuttaOffset = $dateTimeZoneCalcutta->getOffset($dateTimeCalcutta); 
$calcuttaDateTime = date("Y-m-d H:i:s", time() + $calcuttaOffset); 

echo 'Local Server Time: ' . date("Y-m-d H:i:s", time()) . '<br />'; 
echo 'Calcutta Time: ' . $calcuttaDateTime . '<br />'; 
echo 'Calcutta Timestamp: ' . strtotime($calcuttaDateTime) . '<br />'; 
echo '<br /><br />'; 

$dateTimeZoneLondon = new DateTimeZone("Europe/London"); 
$dateTimeLondon = new DateTime("now", $dateTimeZoneLondon); 
$londonOffset = $dateTimeZoneLondon->getOffset($dateTimeLondon); 
$londonDateTime = date("Y-m-d H:i:s", time() + $londonOffset); 

echo 'Local Server Time: ' . date("Y-m-d H:i:s", time()) . '<br />'; 
echo 'London Time: ' . $londonDateTime . '<br />'; 
echo 'London Timestamp: ' . strtotime($londonDateTime) . '<br />'; 
+0

기본적으로 이것은 PHP 5.2 이상이어야합니다. 0). 귀하의 솔루션에 감사드립니다. – shyammtp

+0

@shyammtp 아무런 문제가 없었어요. 내 답변에 언급 했어야했는데. – PhearOfRayne

관련 문제