2013-04-12 12 views
8

W mojej aplikacji klienckiej mam dane o długości geograficznej Latitude & z interfejsu API skyhook na podstawie jego I.P.Google timezone API - parametr timestamp

Teraz, w oparciu o informacje o szerokości i długości geograficznej, muszę poznać informacje o strefie czasowej klienta. Ale w dokumentacji interfejsu Google timezone API https://developers.google.com/maps/documentation/timezone/ Widzę, że znacznik czasu jest polem obowiązkowym. W takim razie co powinienem zrobić.

Czy możesz również pomóc mi zrozumieć, co oznacza znacznik czasu? Na przykład: - Jeśli mój serwer aplikacji znajduje się w USA (np. Strefa czasowa PST) i powoduje, że wywołanie google API przekazuje znacznik czasu serwera.

Jeśli użytkownik loguje się do aplikacji klienckiej z Indii przekazując informacje długie/długie, do serwera aplikacji, aby uzyskać informacje o strefie czasowej, co interfejs API zapewni jako dstOffset i rawOffset? np. Jeśli dodaję znacznik czasu serwera przy pomocy dstOffset i rawOffset, czy otrzymam informacje o strefie czasowej maszyny klienta?

+0

Interfejs API Google Maps Strefa czasowa używa znacznika czasu, aby określić, czy należy zastosować zmianę czasu, w oparciu o strefę czasową lokalizacji. – NoName

Odpowiedz

2

Podany link do dokumentacji wyraźnie wskazuje, że znacznik czasu powinien znajdować się w UTC i że jest używany do wyświetlenia poprawnej wartości przesunięcia DST. Będzie również kontrolować, czy pole timeZoneName jest wyświetlane z nazwą "Standard" lub "Światło dzienne" w nazwie.

Jeśli nie dbasz o to i po prostu chcesz mieć pole timeZoneId, to nie ma znaczenia, jaką wartość przesyłasz.

+1

Jako facet próbujący to zrozumieć, ta odpowiedź w zasadzie potwierdza to, co napisała (słabo napisana) dokumentacja. – radpin

8

Przez kilka minut drapałem się po Google's Timezone API, szczególnie w parametrze timestamp. Może to ułoży potrzebę:

W San Diego, my (obecnie, w sierpniu) mamy przesunięcie GMT -8 ze względu na czas letni. However, in November we'll have a GMT offset of -7.

Które z poniższych przesunięć gmt powinno zwrócić Google? -7 lub -8? Oba są prawidłowe, ale zależy to od dnia, w którym dokonasz pomiaru.

Wprowadź argument Timestamp. Uruchomienie usługi teraz, i za pomocą timestamp value of August 2015, mam tej odpowiedzi:

{ 
    "dstOffset" : 3600, 
    "rawOffset" : -28800, 
    "status" : "OK", 
    "timeZoneId" : "America/Los_Angeles", 
    "timeZoneName" : "Pacific Daylight Time" 
} 

Ale gdybym odkopanie timestamp to November 2015 (raz w San Diego jest z czasu letniego, I skończyć z tym):

{ 
    "dstOffset" : 0, 
    "rawOffset" : -28800, 
    "status" : "OK", 
    "timeZoneId" : "America/Los_Angeles", 
    "timeZoneName" : "Pacific Standard Time" 
} 

W obu przypadkach rawOffset jest taki sam, ale czas letni zmienił się z powodu znacznika czasu, który podałem. Jeśli chcesz tylko poznać strefę czasową, znacznik czasu nie ma znaczenia.

Ale jeśli chcesz, aby aplikacja rzetelnie zrobiła coś o 8:00 w San Diego w sierpniu i 8:00 w listopadzie w San Diego, musisz włączyć sygnaturę czasową.

Mówiąc inaczej, jaka jest wartość poznania, że ​​San Diego jest zwykle -7 godzin przesunięte z GMT. Jeśli pracujesz ze strefami czasowymi, prawdopodobnie próbujesz upewnić się, że Twój czas UTC jest dopasowany do rzeczywistej osoby w danej lokalizacji. Jako takie, przesunięcie czasu letniego jest krytyczne.