我在expo/react-native
中有一个Text
标签,我在屏幕上使用JavaScript new Date()
对象显示实时时间。它给了我24小时格式,即使我设置了"en-US"
和hour12: true
,我已经尝试了所有方法,但似乎不起作用。
下面是我的代码:
const [liveTime, setLiveTime] = useState(new Date())
const refreshLiveTime = () => {
setLiveTime(new Date())
}
useEffect(() => {
const timerId = setInterval(refreshLiveTime, 1000)
return function cleanup() {
clearInterval(timerId)
}
}, [])
这里是我如何渲染它在Text
标签:
<Text>{liveTime.toLocaleTimeString("en-US", {hour12: true})}</Text>
示例预期输出:
01:12:18
我正在接收的输出:
13:12:18
编辑:
我在reactjs
中尝试了相同的代码,它在那里工作得很好,我认为问题出在这里的react-native
,可能react-native不支持toLocaleTimeString()
3条答案
按热度按时间uelo1irk1#
默认情况下,Android上的Expo或React Native不支持带区域设置的日期格式。
如果您使用的是纯React Native,则可以将JavaScriptCore Flavors添加到Android以启用国际化API。
在
android/app/build.gradle
中,使能此行注意:在android上启用国际化将额外增加2MB到您的应用APK。请检查是否值得。
up9lanfz2#
我正在使用moment,请尝试my example:
2uluyalo3#
用
moment
npm包修复了它。其中
liveTime
等于new Date()