2016-05-31 24 views
6

Mi piacerebbe ottenere il fuso orario dell'utente del telefono in modo da poterlo aggiungere o sottrarre alle volte UTC che ottengo dalla mia API e quindi effettuare operazioni su di esse (per le notifiche, per esempio).Ottiene il fuso orario con React Native

Ho trovato solo come aggiungere un offset con DatePickerIOS, ma nient'altro ... È possibile ottenerlo dal lato anteriore?

+1

Vuoi ottenere il dispositivo fuso orario in qualche modo? non puoi semplicemente prenderlo da 'getTimezoneOffset()' su un oggetto Date (in JS)? –

+0

Potrebbe davvero funzionare ... Fammi controllare! –

+0

Ottimo! fammi sapere e io formalmente invierò una risposta. –

risposta

8

Praticamente qualsiasi cosa che si possa fare in JavaScript sul browser (con l'eccezione, ovviamente), si può fare in React Native. Vorrei iniziare un nuovo oggetto data e chiamare getTimezoneOffset() su di esso per ottenere il numero di minuti in cui il fuso orario viene spostato localmente.

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

Si sconsiglia di utilizzare un offset poiché non soddisfa l'ora legale o qualsiasi altra regolazione consentita dal sistema operativo.

Invece fare JavaScript per la conversione da UTC. Questo SO risposta mostra un esempio: Convert UTC date time to local date time using JavaScript

Se avete bisogno di convertire in un fuso orario arbitraria, si dovrebbe guardare utilizzando una libreria come moment.js per gli stessi motivi che ho citato sopra.

0

Ho trovato che è meglio ottenere l'effettivo ID fuso orario (ad esempio America/New_York) e quindi impostare il programma server affinché funzioni utilizzando quel fuso orario all'inizio. Per ottenere questo, utilizzare la libreria reagire-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' 

Se si ottiene un errore di 'TVOS' durante la compilazione, vedere questa correzione: https://github.com/rebeccahughes/react-native-device-info/issues/286