[英]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
无法将本地日期时间转换为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:00Z
和2018-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.