问题描述
我目前正在实施下拉菜单选择,以便为应用程序选择时区。我决定使用 moment.tz.setDefault() 方法,然后重新渲染依赖于它的相应组件,而不是遍历整个项目并为创建的每个时刻对象设置。 当我第一次启动应用程序时,我从 moment() 获得了正确的时间,但是在选择任何时区后,我的时间总是增加 1 小时以上。然后我在下拉菜单中选择我的实时时区(即欧洲/萨拉热窝)我的时间也增加了 1+ 小时,但是在使用 setDefault() 之后没有字符串(应该将我的时区设置为欧洲/萨拉热窝)后我得到了时间和我机器上的一样。我在设置默认时区之前和之后检查了 moment() 对象。最初时区为空,从菜单中选择后,它绑定到选定的时区,然后在将时区设置为默认时区的切换器切换后,时区再次为空
useEffect(() => {
if(timezoneToggle === false) {
setTimezonePicker(false)
} else {
moment.tz.setDefault() // case when toggler is toggled on
console.log("Moment from on toggler:")
console.log(moment())
appState.setTimeZone(moment.tz.guess())
}
},[timezoneToggle]) //eslint-disable-line
function onTimezoneSelect(item: string) {
console.log(moment())
setSelectedTimezone(item)
moment.tz.setDefault(item) // setting default timezone from dropdown menu
appState.setTimeZone(item)
console.log(moment())
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)