【问题标题】:moment.js not creating right datemoment.js 没有创建正确的日期
【发布时间】:2019-03-21 18:59:22
【问题描述】:

我似乎无法弄清楚问题是什么我的网站上有一个手动时间输入功能,用户可以在其中输入时间,然后我将其存储在数据库中..

所以我的函数看起来像这样..

createTime() {
    this.startTime =  moment(`${this.hour}:${this.minute} ${this.timeOfDay}`, `HH:mm a`).utc();
}

所以我在下午 5:45 输入了

现在当我console.log() 创建的那一刻我明白了......

所以它是正确的 UTC 时间,但它说它是 AUS TIME

然后当我从服务器获取时间,然后尝试将其转换回本地时间,就像这样..

fixTime(momentObject: moment.Moment) {
    return moment(momentObject).local().format('hh:mm A');
}

我到了凌晨 4 点 45 分

我不知道是什么问题..我该如何解决这个问题?

【问题讨论】:

  • 当你写5:45 pm时,你的意思是在AEDT还是UTC?
  • 所以当用户输入本地时间的时间时,AEDT 然后我使用createTime 函数将其转换为UTC
  • 您如何将时刻发送到服务器并取回?
  • 所以我将它作为时刻发送,服务器存储时刻并发送回来完全相同
  • 这个jsfiddle.net/v5wdq6o7 按预期工作。您必须准确地向我们展示发送到服务器的内容以及从服务器接收到的内容。

标签: javascript momentjs


【解决方案1】:
   fixTime(momentObject: moment.Moment) {

    var testDateUtc = moment.utc(momentObject);
    var localDate = moment(testDateUtc).local();
    return localDate.format('hh:mm A');
}

您必须创建一个矩对象并将对象上的 UTC 标志设置为 true,并创建一个从原始矩对象转换而来的本地化矩对象,最后从本地化矩返回一个格式化字符串 对象。

见:http://momentjs.com/docs/#/manipulating/local/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多