【问题标题】:Issue with time zone in react native app using moment js使用 Moment js 反应本机应用程序中的时区问题
【发布时间】:2018-02-25 08:09:22
【问题描述】:

我得到了 60 分钟的补偿,但我不知道为什么。

当我创建一个日期时,我得到以下日期:

Tue Feb 27 2018 11:30:28 GMT+0100

当我从数据库中检索它时,我得到以下日期:

2018-02-27T11:30:28.000Z

我然后显示如果有以下代码行:

moment(this.props.starttime).format('LT')

并在我看来得到这个:

12:30

但我可以看到 moment 对象的值如下:

2018-02-27T11:30:28.000Z

显然,我与 UTC 时间有 60 分钟的偏移。

这里发生了什么?因为在这种情况下,当用户选择 11:30 时,它会在之后的视图中显示 12:30。

编辑 1:这就是我将日期发送到我的数据库的方式

axios.post( `https://xxxxxx.ngrok.io/api/book?starttime=${moment(this.props.starttime).format()}`)

这就是我将它保存在我的数据库中的方式(Rails API)

def create
  @request = Request.new(start_datetime: params[:starttime])
end

【问题讨论】:

    标签: javascript react-native time momentjs


    【解决方案1】:

    看起来您在创建日期和将其保存到数据库之间的某个地方丢失了与 UTC 的偏移量,并且您的服务器使用 UTC 而您的客户端系统使用 UTC+0100。

    具体如何创建日期然后保存以便日后检索?

    【讨论】:

    • 刚刚将这些添加到我的问题中。我设法解决了将“.utc”添加到我的时刻对象的问题,但不确定这是否是个好主意?
    • This: moment(this.props.starttime).format() ...看起来它应该保留与 UTC 的偏移量,所以可能是您的服务器如何解析该字符串的问题。
    • 好的,让我看看这个,但我可以使用 .utc 作为修复吗?
    • 是的,重要的是您的客户端和服务器就与 UTC 的偏移量达成一致,这样 11:30:28 这样的时间就不会变得模棱两可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2021-02-27
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多