如何将日期时间从ISO格式转换为UTC时区?
我正在使用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 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?