2016-05-31 22 views
6

Chciałbym uzyskać strefę czasową użytkownika telefonu, dzięki czemu mogę dodać lub odjąć ją do czasu UTC otrzymanego z mojego interfejsu API, a następnie wykonać na nich operacje (dla powiadomień, dla przykład).Uzyskaj strefę czasową z React Native

Znalazłem tylko sposób dodawania przesunięcia z DatePickerIOS, ale nic więcej ... Czy można go pobrać z przodu?

+1

Chcesz dostać urządzenie strefa czasowa jakoś? nie możesz po prostu uzyskać go z 'getTimezoneOffset()' na obiekcie Date (w JS)? –

+0

Może faktycznie działa ... Pozwól mi to sprawdzić! –

+0

Świetnie! daj mi znać, a ja formalnie opublikuję odpowiedź. –

Odpowiedz

8

Prawie wszystko, co można zrobić w JavaScript w przeglądarce (z wyjątkiem oczywiście), można zrobić w React Native. Chciałbym zainicjować nowy obiekt daty i zadzwonić pod numer getTimezoneOffset(), aby uzyskać liczbę minut, w której strefa czasowa jest przesunięta lokalnie.

var date = new Date(); 
var offsetInHours = date.getTimezoneOffset()/60; 
5

Polecam, aby nie używać przesunięcia, ponieważ nie uwzględnia ono zmiany czasu letniego ani żadnych innych regulacji systemu operacyjnego.

Zamiast tego mają JavaScript do konwersji z UTC dla Ciebie. Ten SO odpowiedź pokazuje przykład: Convert UTC date time to local date time using JavaScript

Jeśli trzeba konwertować do arbitralne strefie czasowej, należy spojrzeć na przy użyciu biblioteki jak moment.js dla tych samych powodów wymienionych powyżej.

0

Znalazłem, że lepiej jest uzyskać rzeczywisty identyfikator strefy czasowej (np. America/New_York), a następnie ustawić program serwera do pracy przy użyciu tej strefy czasowej na początku. Aby dostać się, że korzystać z biblioteki reagować-native device-INFO: https://www.npmjs.com/package/react-native-device-info

import DeviceInfo from 'react-native-device-info'; 

console.log(DeviceInfo.getTimezone()); // 'America/New_York' 

Jeśli pojawi się błąd o „tvOS” podczas kompilacji, zobacz tę poprawkę: https://github.com/rebeccahughes/react-native-device-info/issues/286