2010-08-14 5 views
12

어떻게 국가 이름을 찾을 수 있습니다 - 나는 다음과 같이 수행 할 수에> GMT 날짜/시간 :GMT 날짜/시간을 국가 이름으로 찾는 방법은 무엇입니까?

예 : I 시도

$datetime = new GMT_search('America'); //output: 2010-01-01 00:00:00  
$datetime = new GMT_search('India'); //output: 2010-01-01 ??:??:??  
$datetime = new GMT_search('China'); //output: 2010-01-01 ??:??:?? 

gmdate(), date_default_timezone_set('Asia/....');ini_set('date.timezone','China');하지만 정확히 저를 도와 아니에요 GMT 날짜/시간으로 쉽게 국가 이름을 찾으십시오.

누구든지 친절하게도 PHP 예제를 보여줄 수 있습니까? 실제로 작동합니까?

감사합니다

+0

설명이 필요하면 지원되는 시간대가 문제를 찾고 있습니까? –

+3

여러 시간대가있는 국가는 어떻게됩니까? –

+0

그리고 중국도. "중국"은 언제 국가가 되었습니까? – GZipp

답변

35

DateTimeZone::listIdentifiers으로 국가별로 시간대를 검색 할 수 있습니다.

예, 포르투갈의 시간대를 얻을 수 있습니다 :

print_r(DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, "PT")); 

을 제공합니다

 
Array 
(
    [0] => Atlantic/Azores 
    [1] => Atlantic/Madeira 
    [2] => Europe/Lisbon 
)

그런 다음 수행 할 수 있습니다

에서 또 다시 반복 한 바와 같이
$d = new DateTime("now", new DateTimeZone("Atlantic/Azores")); 
echo $d->format(DateTime::W3C); //2010-08-14T15:22:22+00:00 

이 스레드는 국가별로 하나의 시간대를 가질 수 없습니다.국가마다 여러 시간대가 있으며 심지어 this page도 미국과 같은 일부 국가에서는 임의로 선택하지 않음을 알 수 있습니다.

+2

고마워, 나는 도시 또는 시간대에 도달하기 위해 국가 이름/토지 코드를 찾는 방법을 찾고 있었다. 예 : print_r (DateTimeZone :: listIdentifiers (DateTimeZone :: PER_COUNTRY, "PT")); – YumYumYum

+2

완벽한 예제/코드 예제의 아름다움은 다음과 같습니다. 1. 이제는 무엇이든 검색 할 수 있도록 랜드 코드를 배치합니다. 2. 배열 길이를 확인하고 원하는 코드를 선택합니다. 3. 결과가 나타납니다. 다시 한번 감사드립니다. – YumYumYum

3

Here ("변환 시간대"아래로 스크롤) date_default_timezone_set(). 여러 시간대가있는 국가를 지원하면 쉽게 찾을 수 있습니다. example of the American region을 가져 가십시오.

<?php 
date_default_timezone_set('America/New_York'); 
echo date('D,F j, Y, h:i:s A'); 
?> 

목록은 PHP에서 지원되는 완전한 시간대입니다. date_default_timezone_set().

+2

나는 국가 별, NO CITY 데이터베이스가 있습니다. Country To :: GMT_DateTime을 어떻게 만들 수 있습니까? – YumYumYum

+2

기본 도시가있는 국가를 만들어야합니까? 특정 도시 날짜/시간을 원하지 않습니까? 하지만 다시 아시아 나 유럽에 문제가 있습니까? 예 : $ country = array ('America'=> 'New_York', 'India'=> 'Mumbai', 'China'=> 'Sangai'); – YumYumYum

+0

국가에 둘 이상의 시간대가있을 가능성이 있습니다. 따라서 국가 이름을 변환하려고하면 부정확 한 결과가 발생합니다. –

2

많은 나라에 여러 개의 시간대가 있기 때문에 그렇게 할 수 없습니다. 도시 이름 대신 시간대를 저장할 수는 있지만 시간대 오프셋을 초 단위로 정수를 사용합니다.

당신은이 함수/도시 대륙에 의한 시간대의 목록을 얻을 수 있습니다

:

당신은 오프셋 각을 얻을 수 있습니다 www.php.net/manual/en/function.timezone-identifiers-list.php 이 함수는 다음과 같습니다. www.php.net/manual/en/datetimezone.getoffset.php

오프셋이 유효한 경우 date() 대신 gmdate()를 사용하면 시간대/표준시 조정. 그냥 시간() + 저장 한 조정 : www.php.net/manual/en/function.gmdate.php

죄송하지만 링크를 게시하지 않아서 불만을 나타 냈지만 충분한 업보가 없습니다.

+2

국가 이름 만 선택하면이 방법을 사용하려고합니다. EX : http://wwp.greenwichmeantime.com/time-zone/all.htm – YumYumYum

+2

나는 그다지 원하지 않는다. 그것의 국가 이름. – YumYumYum

+1

@Stackfan : 네, 저를 .../time-zone/usa와 언급 된 페이지 내용으로 데려 오는 "미국"링크를 선택했습니다. 그래서, 당신은 당신이 원하지 않는 것을 보여 주셨습니까? 당신은 또한'네 !! Capital/Down town 나는 이야기하고있다. (국가 이름 + 자본) === 국가 이름 ===', 어느 쪽입니까? '국가 이름'또는'국가 이름 + 자본'? – VolkerK

관련 문제