2013-03-01 15 views
7

Mi chiedo se esiste un modo per ottenere il fuso orario dell'utente in php e quindi visualizzare un orario in base al fuso orario del visualizzatore. So che può essere fatto in javascript ma voglio una soluzione in php. Ho cercato molto ma non riesco a trovare un modo per ottenere questo lavoro.PHP: Mostra ora in base al fuso orario dell'utente

Quindi, in pratica, supponiamo che l'ora sia 8:30 GMT + 0530. Il fuso orario indiano lo voglio se un utente lo visualizza a Ne York, quindi dovrebbe essere le 21:30.

+0

[Cosa hai provato?] (Http://www.whathaveyoutried.com/) Vedi [chiedi consiglio] (http://stackoverflow.com/questions/ask-advice), per favore. –

+0

L'ho già fatto usando js ma volevo sapere se è possibile ottenerlo in php. –

risposta

5

Se hai aggiunto gli utenti Timezone durante la registrazione o conosci gli utenti Timezone in qualche modo, allora puoi provare questo .. .

$users = array(
    array(
     'username' => 'foo', 
     'timezone' => 'America/Los_Angeles' 
    ), 
    array(
     'username' => 'bar', 
     'timezone' => 'America/New_York' 
    ) 
); 

foreach ($users as $user) { 
    date_default_timezone_set($user['timezone']); 
    echo $user['username'] . ' date and time is ' . date('Y-m-d H:i:s') . '<br />'; 
} 

uscita

foo time is 2013-02-28 18:13:49 
bar time is 2013-02-28 21:13:49 

È anche possibile Fuso orario dell'utente in JavaScrpt Getting the client's timezone in JavaScript. Crea una richiesta Ajax e salva in sessione o database PHP.

+0

Da dove viene il tuo codice "ottenere il fuso orario dell'utente"? –

+2

Questo è così statico e inutile, è necessario ottenere le informazioni dell'utente e impostare il fuso orario da loro – Sam

+4

È statico ai fini della dimostrazione. Ovviamente non scrivi i tuoi utenti in un array. –

3

È necessario ottenere le informazioni utente e impostare il fuso orario predefinito

sguardo date_default_timezone_set()

E ip geolocation api

+0

Cosa succede se la loro API non ha l'IP dell'utente nel db? JS ** restituirà sempre ** il fuso orario dell'utente. PHP non può. Inoltre, farlo in questo modo non è affidabile, a causa di VPN come iPredator ecc. –

+0

In tal caso, puoi provare con un fuso orario generico, come $ _SERVER ['HTTP_ACCEPT_LANGUAGE'] – Sam

+0

Perché utilizzare un fuso orario generico quando puoi utilizzare l'effettivo fuso orario, fornito da JS? –

1

È possibile ottenere il fuso orario gli utenti attraversando il loro IP con molti database di geolocalizzazione disponibili, come ad esempio IPInfoDB

http://ipinfodb.com/ip_location_api.php

dovrai registrarti per una chiave API gratuita, ma ti fornirà anche un esempio funzionante (sopra)

Problemi correlati