2013-03-01 19 views
7

Ich frage mich, ob es eine Möglichkeit gibt, die Zeitzone des Benutzers in PHP zu bekommen und dann eine Zeit basierend auf Viewer-Zeitzone anzuzeigen. Ich weiß, dass es in Javascript getan werden kann, aber ich möchte eine Lösung in PHP. Ich habe viel gesucht, aber ich finde keinen Weg, diese Arbeit zu bekommen.PHP: Zeige Zeit basierend auf der Zeitzone des Benutzers

Also angenommen, die Zeit ist 8:30 GMT + 0530. In der indischen Zeitzone möchte ich, wenn ein Benutzer dies in New York sieht, dann sollte es 21:30 sein.

+0

[Was haben Sie versucht?] (Http://www.whathaveyoutried.com/) Siehe bitte [Fragen Beratung] (http:// Stackoverflow.com/questions/ask-advice), bitte. –

+0

Ich habe es bereits mit js gemacht aber wollte wissen, ob es in PHP erreicht werden kann. –

Antwort

5

Wenn Sie die Benutzer Timezone während der Registrierung hinzugefügt oder Sie Benutzer Timezone irgendwie kennen, dann können Sie dies versuchen .. .

$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 />'; 
} 

Ausgabe

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

Sie können in Javascrpt Getting the client's timezone in JavaScript auch Zeitzone Benutzer. Erstellen Sie eine Ajax-Anfrage und speichern Sie sie in einer PHP-Sitzung oder in einer Datenbank.

+0

Wo bekommt dein Code "die Zeitzone des Users"? –

+2

Dies ist so statisch und nutzlos, Sie müssen die Informationen des Benutzers erhalten und stellen Sie die Zeitzone von ihnen – Sam

+4

Es ist statisch zum Zweck der Demonstration. Natürlich schreiben Sie Ihre Benutzer nicht in ein Array. –

3

Sie müssen die Benutzerinformationen erhalten und stellen Sie die Standard-Zeitzone

Blick date_default_timezone_set()

Und ip geolocation api

+0

Was ist, wenn ihre API keine Benutzer-IP in ihrer Datenbank hat? JS wird ** immer ** die Zeitzone des Benutzers zurückgeben. PHP kann nicht. Außerdem ist es nicht so zuverlässig, aufgrund von VPNs wie iPredator usw. –

+0

In diesem Fall können Sie versuchen mit einer generischen Zeitzone, wie $ _SERVER ['HTTP_ACCEPT_LANGUAGE'] – Sam

+0

Warum eine generische Zeitzone verwenden, wenn Sie den tatsächlichen Benutzer verwenden können Zeitzone, von JS zur Verfügung gestellt? –

1

Sie können durch Kreuzung ihre IP mit vielen verfügbaren Geolocation-Datenbanken der Benutzer Zeitzone erhalten, wie IPInfoDB

http://ipinfodb.com/ip_location_api.php

Sie müssen sich für einen kostenlosen API-Schlüssel registrieren, aber sie bieten Ihnen auch ein funktionierendes Beispiel (oben)

Verwandte Themen