最简单的解决方案是在一行中使用Date()。对于偏移量变量,您只需计算UTCHours和Hours of User-〉之间的差值,然后将此偏移量 * 60 * 60 * 1000添加到从Firebase获得的秒数中。这样您就可以获得正确的日期+时间
let offset = new Date().getHours() - new Date().getUTCHours()//this after seconds: + offset * 60 * 60 * 1000
let year = new Date(item.creation.seconds * 1000).toISOString().slice(2, 4)
let month = new Date(item.creation.seconds * 1000 + offset * 60 * 60 * 1000).toISOString().slice(5, 7)
let day = new Date(item.creation.seconds * 1000 + offset * 60 * 60 * 1000).toISOString().slice(8, 10)
let time = new Date(item.creation.seconds * 1000 + offset * 60 * 60 * 1000).toISOString().slice(11, 16)
let endvalue = month + "." + day + "." + year + " " + time
setdate(endvalue)
9条答案
按热度按时间gjmwrych1#
我发现最好是获取实际的时区ID(例如
America/New_York
),然后在开始时将服务器程序设置为使用该时区。要获得该时区,请使用react-native-device-info库:https://www.npmjs.com/package/react-native-device-info如果您在编译期间遇到有关“tvOS”的错误,请参阅此修复:https://github.com/rebeccahughes/react-native-device-info/issues/286
kgsdhlau2#
你可以在浏览器上用JavaScript做的几乎所有事情(当然有例外),你都可以在React Native中做。我会启动一个新的日期对象,并在其上调用
getTimezoneOffset()
来获取时区在本地偏移的分钟数。zzoitvuj3#
我还需要在我的React Native应用程序中获取时区。但我需要以IANA格式获取时区,而不是偏移量。
上面建议的库**“react-native-device-info”**,不推荐使用timeZone方法,因此我不得不搜索更新的替代方案。
我正在使用expo,我在使用“react-intl”库时遇到了问题,但我发现有两个库可以完成这项工作:
1.如果您使用的是“bare”react native:
1.如果您使用 expo:
ycggw6v24#
如果你使用Expo构建你的项目,你可以使用
Localization
对象。进口:
用途:
它将以显示格式返回当前时区,例如
America/Los_Angeles
。ljo96ir55#
我建议不要使用偏移量,因为它不适合日光节约或操作系统可以进行的任何其他调整。
相反,让JavaScript为你从UTC转换。这个SO答案显示了一个例子:Convert UTC date time to local date time using JavaScript
如果你需要转换到一个 * 任意 * 时区,你应该考虑使用像moment.js这样的库,原因和我上面提到的一样。
vsnjm48y6#
为了在React Native中(或在Web上)获取时区,我使用以下命令:
它返回如下内容:“美洲/洛杉矶”
mpbci0fu7#
请尝试react-native-tz,当我找不到一个工作的替代品时构建了这个...它基于react-native-timezone,虽然是一个较新的实现。
btqmn9zl8#
DeviceInfo.getTimeZone()已移动到react-native-localize
nmpmafwu9#
最简单的解决方案是在一行中使用Date()。对于偏移量变量,您只需计算UTCHours和Hours of User-〉之间的差值,然后将此偏移量 * 60 * 60 * 1000添加到从Firebase获得的秒数中。这样您就可以获得正确的日期+时间