2010-08-14 24 views
12

¿Cómo puedo encontrar nombre del país -> GMT fecha/hora para que yo pueda hacer, como siguiente:¿Cómo encontrar la fecha/hora GMT por nombre de país?

Ejemplo:

$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 ??:??:?? 

Probé gmdate(), date_default_timezone_set('Asia/....'); y ini_set('date.timezone','China'); pero no me está ayudando precisamente a encuentre fácilmente el nombre del país en la fecha/hora GMT.

¿Alguien puede mostrarme amablemente un ejemplo de PHP, que realmente funciona?

Gracias

+0

¿Necesita aclaración, está encontrando zonas horarias compatibles con el problema? –

+3

¿Qué pasa con los países con múltiples zonas horarias? –

+0

y China, también. ¿Cuándo se convirtió "China" en un país? – GZipp

Respuesta

35

Puede buscar las zonas horarias por país con DateTimeZone::listIdentifiers.

ejemplo, para obtener las zonas horarias en Portugal:

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

da:

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

A continuación, puede hacer:

$d = new DateTime("now", new DateTimeZone("Atlantic/Azores")); 
echo $d->format(DateTime::W3C); //2010-08-14T15:22:22+00:00 

Como se ha repetido una y otra vez en este hilo, no se puede obtener un solo huso horario por país.Los países tienen varias zonas horarias, y notará que incluso this page ni siquiera selecciona una arbitrariamente para algunos países, como los EE.UU.

+2

Gracias, estaba tratando de encontrar cómo el nombre del país/código de la tierra para llegar a la ciudad o la zona horaria. ej .: print_r (DateTimeZone :: listIdentifiers (DateTimeZone :: PER_COUNTRY, "PT")); – YumYumYum

+2

La cosa/belleza perfecta de su ejemplo de código está aquí: 1. Pondré el código de la tierra ahora para buscar lo que sea 2. Verificaré la longitud de la matriz y elegiré cualquiera 3. Tengo mi resultado. Gracias de nuevo.. – YumYumYum

3

Here que encontrará la lista completa de zonas horarias soportados por PHP, que están destinados a ser utilizados con, por ejemplo date_default_timezone_set(). El soporte para países con múltiples zonas horarias también es conveniente para buscar. Tome el example of the American region.

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

La lista es una zona horaria completa compatible con PHP, que se debe utilizar, por ejemplo, con PHP. date_default_timezone_set().

+2

Tengo solo el país, NO CITY database. ¿Cómo se puede hacer Country To :: GMT_DateTime? – YumYumYum

+2

¿Debo hacerlo, país con ciudad predeterminada? No quiero una fecha/hora específica de la ciudad? Pero de nuevo tengo un problema con Asia o Europa ?. ej: $ country = array ('America' => 'New_York', 'India' => 'Mumbai', 'China' => 'Sangai'); – YumYumYum

+0

Existe la posibilidad de que un país tenga más de una zona horaria. Por lo tanto, tratar de convertir un nombre de país produciría resultados inexactos. –

2

No puede hacerlo así, ya que muchos países tienen múltiples zonas horarias. En su lugar, podría almacenar la zona horaria con el nombre de una ciudad, pero utilizaría un número entero con el desplazamiento de la zona horaria en segundos.

Usted puede obtener una lista de zonas horarias por continente/ciudad desde esta función: www.php.net/manual/en/function.timezone-identifiers-list.php

que pueda obtener el correspondiente desplazamiento desde esta función: www.php.net/manual/en/datetimezone.getoffset.php

Cuando tiene un desplazamiento válido, puede usar gmdate() en lugar de date() para obtener una fecha en su formato sin el ajuste de zona horaria/dst. Simplemente pase el tiempo() + el ajuste que ha almacenado: www.php.net/manual/en/function.gmdate.php

Lo siento por no publicar enlaces, pero no tengo suficiente karma.

+2

Estoy intentando esto donde seleccionas NOMBRE DEL PAÍS. EX: http://wwp.greenwichmeantime.com/time-zone/all.htm – YumYumYum

+2

Eso no quiero. Es sobre COUNTRY NAME. – YumYumYum

+1

@Stackfan: Sí, elegí el enlace "Estados Unidos de América" ​​que me llevó a .../zona horaria/usa y el contenido de la página mencionada. Entonces, ¿dio un ejemplo de lo que no quiere? También escribió '¡Sí! Capital/Down town estoy hablando. (COUNTRY NAME + CAPITAL) === COUNTRY NAME === ', ¿cuál es? 'nombre del país' o' nombre del país + capital'? – VolkerK

Cuestiones relacionadas