如何将日期时间从ISO格式转换为UTC时区?

我正在使用moment.js ,我想从ISO格式的日期时间转换为UTC时区。

我可以从本地时间转换为UTC + ISOformat,但我无法将ISO格式转换为UTC时区。

输入:

2018-03-22T00:00:00Z

预期产出:

日期应该在UTC时区。 如果我计算它应该是:

22018-03-21T18:30:00Z
  • 首先我想转换成ISO,然后转换成UTC **。
  • 无法将本地日期时间转换为ISO然后是UTC

    我们可以转换成字符串,但从ISO格式可以转换或不?

    Fox示例:我想将ISODATE(2018-03-22T00:00:00Z)转换为UTC时区。

    function toISO(dt) {
      return moment(dt).format("YYYY-MM-DDTHH:mm:ss") + "Z";
    }
    var date = new Date();
    var isoDate= toISO(date)
    

    直接我们可以转换

    function toISOWithUtc(dt) {
          return moment(dt).utc().format("YYYY-MM-DDTHH:mm:ss") + "Z";
    }
    var date = new Date();
    toISO(date)
    

    2018-03-22T00:00:00Z2018-03-21T18:30:00Z 均已采用UTC 2018-03-21T18:30:00Z

    注意Z到底? 这意味着日期是UTC。 这不是一个硬编码的字母,你可以追加到最后 - 它有一个特定的含义,它表示日期/时间是UTC。

    如果你想将UTC日期转换为另一个时区(我猜这就是你想要的),你可以使用moment.tz:

    // convert UTC 2018-03-22T00:00:00Z to Asia/Kolkata timezone
    moment.tz('2018-03-22T00:00:00Z','Asia/Kolkata')
    

    只需将时区名称更改为您想要转换的名称即可。

    调用format()会以ISO8601格式给出转换的日期/时间:

    moment.tz('2018-03-22T00:00:00Z','Asia/Kolkata').format() // 2018-03-22T05:30:00+05:30
    

    请注意,偏移量从Z变为+05:30 。 这意味着上面的日期/时间是UTC 5小时30分钟,这是将2018-03-22T00:00:00Z转换为加尔各答时区的结果。

    注意:我认为你在这里弄错了这些概念。

    UTC是时间标准。 它定义了诸如全球当前日期/时间等事物,它使用原子钟来确保地球上的每个人都同步,并且时区都基于UTC的偏移量。

    ISO8601是交换日期/时间相关数据的标准。 它定义了格式 (日期的文本表示)。 日期/时间可以采用ISO格式, 无论采用UTC还是不采用

    这就是为什么“从UTC转换到ISO”(反之亦然)根本没有意义。

    链接地址: http://www.djcxy.com/p/46601.html

    上一篇: How to convert date time from ISO Format to UTC time zone?

    下一篇: Create javascript Date() object to Amrica/New