2013-03-01 10 views
7

Zastanawiam się, czy istnieje sposób, aby uzyskać strefę czasową użytkownika w php, a następnie wyświetlić czas na podstawie strefy czasowej widza. Wiem, że można to zrobić w javascript, ale chcę rozwiązania w php. Dużo szukałem, ale nie mogę znaleźć sposobu, aby uzyskać tę pracę.PHP: Pokaż czas w oparciu o strefę czasową użytkownika

Załóżmy, że jest godzina 8:30 GMT + 0530. Jego w indyjskim timezone chcę, jeśli użytkownik przegląda to w Nowym Jorku, to powinno być 21:30.

+0

[Co próbowałeś?] (Http://www.whathaveyoutried.com/) Zobacz [zapytaj porady] (http://stackoverflow.com/questions/ask-advice), proszę. –

+0

Już zrobiłem to za pomocą js, ale chciałem wiedzieć, czy można to osiągnąć w php. –

Odpowiedz

5

Jeśli dodałeś strefę czasową użytkowników podczas rejestracji lub znasz już strefę czasową użytkowników, możesz spróbować tego .. .

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

Wyjście

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

można również czasowa użytkownika w JavaScrpt Getting the client's timezone in JavaScript. Utwórz żądanie Ajax i zapisz w sesji PHP lub w bazie danych.

+0

Gdzie twój kod "dostaje strefę czasową użytkownika"? –

+2

To jest tak statyczne i bezużyteczne, musisz uzyskać informacje od użytkownika i ustawić strefę czasową przez nich. – Sam

+4

Jest statyczny dla celów demonstracyjnych. Oczywiście nie zapisujesz swoich użytkowników do tablicy. –

3

Musisz uzyskać informacje o użytkowniku i ustawić domyślną strefę czasową

Look date_default_timezone_set()

I ip geolocation api

+0

Co jeśli ich API nie ma adresu IP użytkownika w jego bazie danych? JS ** zawsze ** zwróci strefę czasową użytkownika. PHP nie może. Robienie tego w ten sposób nie jest niezawodne, ze względu na VPN, takie jak iPredator itp. –

+0

W takim przypadku możesz spróbować z ogólną strefą czasową, np. $ _SERVER ['HTTP_ACCEPT_LANGUAGE'] – Sam

+0

Po co używać ogólnej strefy czasowej, kiedy możesz użyć rzeczywistego użytkownika strefa czasowa, dostarczana przez JS? –

Powiązane problemy