【问题标题】:Javascript - Convert ISO8601 UTC time to client's local time [duplicate]Javascript - 将 ISO8601 UTC 时间转换为客户端的本地时间 [重复]
【发布时间】:2019-08-10 08:00:21
【问题描述】:

我正在为我的网站使用 asp.net mvc 5,并且我正在使用 ISO8601 格式将交易日期作为 DateTime 对象从模型发送到 UTC 视图 - 2019-03-15T22:32:04.9143842Z

如果我从模型中收到2019-03-15T22:32:04.9143842Z 作为字符串,我需要一个可以将其转换为客户端本地时间的函数。因此,如果客户端在 PST 中,那么它应该将其转换为此类。

【问题讨论】:

  • 您能否澄清一下哪个部分有问题 - 将 ISO8601 转换为 .Net DateTime,在服务器上计算客户端的时区,在浏览器中将 ISO8601 转换为本地时间? (@DiogoRocha 建议重复,但虽然这正是帖子所要求的,但它不太可能对您有所帮助,因为您不知道服务器上客户端的时区)

标签: javascript c# asp.net-mvc-5


【解决方案1】:

您可以简单地将这种格式传递给Date 对象构造函数(或Date.parse)。

var d = new Date("2019-03-15T22:32:04.9143842Z");

末尾的Z 很重要,因为它表示UTC。

然后,您可以使用像 .toString().toLocaleString() 这样发出本地时间的函数。您可以找到Date 对象引用on MDN here

在美国太平洋时区运行时:

console.log(d.toString());
//=> "Fri Mar 15 2019 15:32:04 GMT-0700 (Pacific Daylight Time)"

或者,您可以使用 Date-fnsLuxonMoment 等库以特定方式将日期格式化为字符串。

【讨论】:

    【解决方案2】:

    此日期时间类型/标准是 iso 8601。 https://en.wikipedia.org/wiki/ISO_8601 如何使用 javascript 解析 iso 8601 日期有很多不同类型的可能性,其中之一是

    new Date(isoDateString)
    

    其他包括https://github.com/datejs/Datejs (Date.parse(isoDateString)) 等包或自己手动解析。
    然后您可以获取客户时区并将时区更改为它/或任何所需的时区。

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 2016-10-03
      • 1970-01-01
      • 2018-07-27
      相关资源
      最近更新 更多