【发布时间】:2018-07-08 04:50:49
【问题描述】:
我通过 Ajax 调用获得了 UTC 日期,例如"/Date(1517216466000+0100)/",
这是在打印到控制台时:Mon Jan 29 2018 10:01:06 GMT+0100 (W. Europe Standard Time)。
我需要做的是让用户更改时区:我可以很容易地做到这一点,例如moment(myDate).tz("Japan")。
然后我需要将日期保存为 UTC 格式,这是我无法做到的。
我一直在尝试使用 moment.utc(),但对于上面的输入,它返回 1 小时以下。
如何处理这种情况?总结:
1. 从网络服务获取 UTC 时间
2.让用户更改时区
3.以UTC保存修改日期(不带时区)
工作演示:https://stackblitz.com/edit/angular-kqrct7?file=app%2Fapp.component.html
编辑澄清:
让我们看看时间。我从 WCF 得到的日期是 10 点。浏览器将其解释为 10 点钟,但在 GMT+1 中,因此当我将其转换为 UTC 时,它变为 9 点钟。
我希望它是 10 点UTC。然后,如果我修改时区,例如这个日期的分钟,我希望能够得到这个日期的 UTC 值。
EDIT2:让我的问题更容易澄清
我有一个 UTC 日期,我从一个网络服务获得,例如:“/Date(1517216466000+0100)/”,即:2018 年 1 月 29 日星期一 10:01:06 GMT+0100 (W.欧洲标准时间)打印到控制台时。
我用 moment(this.inputDate).tz("Europe/Berlin").format() 添加了一个时区,但它保持在 10:01:06,我猜是因为我的浏览器 GMT+ 1.
我希望将原始字符串用作 UTC 日期,并且它应该保持 10:01:06,而不是 09:01:06,如您在上面看到的(第二时刻示例),因此使用时区“欧洲/柏林”将是 11:01:6
【问题讨论】:
-
您能否使用实际示例值来解释您的问题并说明问题所在。
-
Save the modified date in UTC (without the timezone)UTC 没有时区,这就是重点。 :) -
@Keith 描述已更新
-
@phuzi 添加了更多详细信息
-
你能用简单的术语解释一下你想要做什么吗..? Javascript 中的日期/时间可能会有点令人困惑,并且您最终可能会在不需要时将事情复杂化。基本上,Javascript 中的所有日期时间都在语言环境时间中视觉上工作,但在内部工作在 UTC,这样想可能会有所帮助。
标签: javascript date datetime momentjs