Solución:
Descubrí que es mejor obtener el ID de zona horaria real (como America/New_York
) y luego configure su programa de servidor para que funcione usando esa zona horaria al principio. Para obtener eso, use la biblioteca react-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'
Si recibe un error sobre ‘tvOS’ durante la compilación, consulte esta solución: https://github.com/rebeccahughes/react-native-device-info/issues/286
Prácticamente cualquier cosa que pueda hacer en JavaScript en el navegador (con excepción, por supuesto), puede hacer en React Native. Iniciaría un nuevo objeto de fecha y llamaría getTimezoneOffset()
en él para obtener la cantidad de minutos en que la zona horaria se compensa localmente.
var date = new Date();
var offsetInHours = date.getTimezoneOffset() / 60;
Recomiendo no usar una compensación, ya que no se adapta al horario de verano ni a ningún otro ajuste que pueda realizar el sistema operativo.
En su lugar, haga que JavaScript realice la conversión de UTC por usted. Esta respuesta SO muestra un ejemplo: Convierta la fecha y hora UTC a la fecha y hora local usando JavaScript
Si necesita convertir a un arbitrario zona horaria, debería considerar el uso de una biblioteca como moment.js por las mismas razones que mencioné anteriormente.