在javascript中计算iso时间格式的时差?

Tec*_*ain 4 javascript datetime node.js typescript

我有两个 ISO 格式的日期字符串。我正在使用 moment js 计算它们之间的分钟差。

var currenttime  =  new Date().toISOString();
var expiretime  = '2020-06-05T12:18:33.000Z';


let minutes = moment(expiretime, 'YYYY-MM-DD[T]HH:mm:ss. SSS[Z]').diff(moment(currenttime, 'YYYY-MM-DD[T]HH:mm:ss. SSS[Z]'), 'minutes');


console.log(minutes)
Run Code Online (Sandbox Code Playgroud)

现在我有两个问题

  1. 这是计算分钟差的最佳方法吗?

  2. 当我new Date().toISOString()之前运行该值z时应该是时区但每次重新启动时它都会改变?

请让我知道是什么问题?

小智 6

我认为您不必仅为此目的包含 moment,这可以在普通的 Javascript 中完成。要计算时间差,只需减去两个时间戳,这将给出以毫秒为单位的差异。然后除以60*1000将给出以分钟为单位的时间差。

let currentTime = new Date();
let expireTime = new Date('2020-06-05T12:18:33.000Z');

let minutes = (expireTime - currentTime) / (1000 * 60);

console.log(minutes);
Run Code Online (Sandbox Code Playgroud)

  • @Dennis— AIUI,“Z”是美国、英国等多个国家/地区使用的标准[军事时区标识符](https://en.wikipedia.org/wiki/List_of_military_time_zones)中GMT或UTC的标识符“祖鲁”这个名字来源于拼音字母,其中“Z”被称为“祖鲁”。因此,Z 不是代表 Zulu,实际上是相反的:Zulu 代表 Z。:-) PS 军事时区只有每小时增量,因此不包括一些偏移量或夏令时,因此 Z 是唯一相同的时区民用。ISO 8601 也使用它。 (2认同)