首页 > 解决方案 > 将时间转换为时刻时区中的特定时区

问题描述

我有个约会2018-06-19 09:06:29。这就是它在数据库中的存储方式。我正在使用moment-timezone和调用这个函数。

function getDateString(t, tz) {
    return moment()
    .tz("America/Chicago")
    .format('l');
}

在这里,我知道我timezone的是“美国/芝加哥”,它是“UTC-5 小时”。我应该在我作为参数通过的时间之前 5 小时得到时间。

在我升级我的反应之前,此功能运行良好。谁能知道可能是什么问题?

这些是我当前的反应设置

"expo": "^27.0.0",
"moment": "^2.22.2",
"react": "16.3.1",
"react-moment": "^0.7.0",
"moment-timezone": "^0.5.17",
"react-native": "https://github.com/expo/react-native/archive/sdk-27.0.0.tar.gz",
"react-native-swipeable": "^0.6.0",
"react-navigation": "1.5.11"

标签: javascriptdatetimereact-nativetimezonemomentjs

解决方案


根据我的评论,不确定到底出了什么问题(以及它过去是如何在你身边工作的),但它应该如何对我起作用:

  1. 使用您的日期时间创建一个时刻,指定它以 utc 表示,使用moment.utc()

  2. 将其转换为您的时区moment.tz()

这会给出类似的东西:

function getDateString(t, tz) {
    return moment.utc(t, 'YYYY-MM-DD HH:mm:ss')
    .tz("America/Chicago")
    .format('l');
}

推荐阅读