繁体   English   中英

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

[英]How to convert date time from ISO Format to UTC time zone?

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

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

输入:

2018-03-22T00:00:00Z

预期产量:

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

22018-03-21T18:30:00Z
  1. 首先,我想转换为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中

注意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” (反之亦然)完全没有意义的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM