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

Javascript 如何将日期时间从ISO格式转换为UTC时区?,javascript,datetime,momentjs,utc,iso8601,Javascript,Datetime,Momentjs,Utc,Iso8601,我正在使用moment.js,我想将ISO格式的日期时间转换为UTC时区 function toISO(dt) { return moment(dt).format("YYYY-MM-DDTHH:mm:ss") + "Z"; } var date = new Date(); var isoDate= toISO(date) 我可以将本地时间转换为UTC+ISO格式,但无法将ISO格式转换为UTC时区 function toISO(dt) { return moment(dt).form

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

function toISO(dt) {
  return moment(dt).format("YYYY-MM-DDTHH:mm:ss") + "Z";
}
var date = new Date();
var isoDate= toISO(date)
我可以将本地时间转换为UTC+ISO格式,但无法将ISO格式转换为UTC时区

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

2018-03-22T00:00:00Z
预期产出:

日期应为UTC时区。如果我计算出该值,则应为:

22018-03-21T18:30:00Z
  • 首先我想转换成ISO,然后再转换成UTC** 无法将本地日期时间转换为ISO then 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)
    
    直接我们可以转换


    2018-03-22T00:00:00Z
    2018-03-21T18:30:00Z
    都已处于UTC

    注意最后的
    Z
    。它不是一个硬编码的字母,您可以将其添加到末尾-它有一个特定的含义,它告诉您日期/时间是UTC

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

    只需将时区名称更改为要转换的名称

    调用
    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
    转换为加尔各答时区的结果

    注意:我认为你误解了这里的概念

    。它定义了世界各地的当前日期/时间,它使用原子钟来确保地球上的每个人都是同步的,等等

    。它定义了格式(日期的文本表示)。日期/时间可以是ISO格式,无论是否为UTC格式


    这就是为什么“从UTC转换为ISO”(或反之亦然)毫无意义。
    2018-03-22T00:00:00Z
    2018-03-21T18:30:00Z
    都已经在UTC中了

    注意最后的
    Z
    。它不是一个硬编码的字母,您可以将其添加到末尾-它有一个特定的含义,它告诉您日期/时间是UTC

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

    只需将时区名称更改为要转换的名称

    调用
    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
    转换为加尔各答时区的结果

    注意:我认为你误解了这里的概念

    。它定义了世界各地的当前日期/时间,它使用原子钟来确保地球上的每个人都是同步的,等等

    。它定义了格式(日期的文本表示)。日期/时间可以是ISO格式,无论是否为UTC格式


    这就是为什么“从UTC转换为ISO”(或从UTC转换为ISO)毫无意义。

    请包含每个输入的输入和预期输出。@Igor convert-to-UTC。。2018-03-22T00:00:00Z让我重新措辞:你的问题,包括输入和相应的预期输出。如果你真的想对那些看问题的人有所帮助,就好像你在写单元测试一样去做。
    2018-03-22T00:00:00Z
    怎么不在“日期应该在UTC时区”中?同样,编写它就像编写单元测试一样。您正在检查的类型是什么,其值应该是什么?目前还不清楚您实际要求/需要什么。
    2018-03-22T00:00:00Z
    不是本地时间,末尾的
    Z
    表示时区是UTC。请包括每个输入的输入和预期输出。@Igor转换为UTC。。2018-03-22T00:00:00Z让我重新措辞:你的问题,包括输入和相应的预期输出。如果你真的想对那些看问题的人有所帮助,就好像你在写单元测试一样去做。
    2018-03-22T00:00:00Z
    怎么不在“日期应该在UTC时区”中?同样,编写它就像编写单元测试一样。您正在检查的类型是什么,其值应该是什么?目前还不清楚您实际要求/需要什么。
    2018-03-22T00:00:00Z
    不是本地时间,末尾的
    Z
    表示时区是UTC。有两种转换方式。。函数toISO(dt){return moment(dt).format(“YYYY-MM-DDTHH:MM:ss”)+“Z”}函数toISOWithUtc(dt){return moment(dt).utc().format(“YYYY-MM-DDTHH:MM:ss”)+“Z”}第一个toISO只转换为ISO格式,而不是utc格式。第二个转换为UTC和ISO1-如果你在最后加了一个
    Z
    ,这意味着日期是UTC-检查上面答案中的链接。2-UTC是一种时间标准,用于定义“当前时间”等内容,并由时区用于定义世界各地的本地时间,而ISO8601定义了格式(日期的文本表示)。将UTC转换为ISO毫无意义:“YYYY-MM-DDTHH:MM:ss”是一种ISO格式,无论是否使用UTC。是的,您是正确的。我已经以错误的方式转换到UTC。谢谢你,有两种方法可以转换。。函数toISO(dt){return moment(dt).format(“YYYY-MM-DDTHH:MM:ss”)+“Z”}函数toISOWithUtc(dt){return moment(dt).utc().format(“YYYY-MM-DDTHH:MM:ss”)+“Z”}第一个toISO只转换为ISO格式,而不是utc格式。第二个转换为UTC和ISO1-如果你在最后加了一个
    Z
    ,这意味着日期是UTC-检查上面答案中的链接。2-UTC是一个tim