【问题标题】:Moment converting datetime wrong时刻转换日期时间错误
【发布时间】:2016-11-20 02:01:40
【问题描述】:

我正在从日期选择器中获取时间。我选择 2016 年 7 月 15 日,当我检查 sd 的变量时,它是 2016 年 7 月 15 日 00:00:00 GMT 在我在下一行之后填充 filterDataSearchFilter.startDateTime 变量后,它现在是 2016 年 7 月 14 日,而不是 15 日。

为什么会这样?为什么时刻给我"2016-07-10T12:00:00.000Z"而不是"2016-07-11T12:00:00.000Z"

 goButtonSearchFilter() {
        debugger;
        if (this.filterDataSearchFilter.startDateTimeNonUtc != null) {
            var sd = this.filterDataSearchFilter.startDateTimeNonUtc.toString();
            this.filterDataSearchFilter.startDateTime = moment(this.filterDataSearchFilter.startDateTimeNonUtc).startOf('day').toISOString();
        }

【问题讨论】:

  • GMT New Zealand 是矛盾的。
  • 您实际上想要完成什么?目前尚不清楚您为什么要在 任一 天中午 UTC。

标签: javascript datetime typescript momentjs


【解决方案1】:

问题不在于时刻,而是 toISOString() 未能考虑时区偏移。时刻已经为您提供了一天的开始,但等弦线偏移了时区,因此减少了那么多小时,将这一天带到前一天。

希望对你有帮助

【讨论】:

  • toISOString 确实考虑偏移量 - 在产生结果之前从本地时间转换为 UTC。 Date 对象版本的toISOString 工作方式相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-23
相关资源
最近更新 更多