如何在javascript中获得两个原始日期之间的分钟差

How to obtain difference in minutes between two raw dates in javascript?

本文关键字:原始 两个 日期 之间 分钟 javascript      更新时间:2023-09-26

如何在javascript中获得两个原始日期之间的分钟差?即用作"2分钟前"、"10分钟前"等

我所说的RAW是指这种格式->2015-02-05T03:1:33.301Z(var x=new Date())

这就是我所拥有的,但我总是在返回值中得到NaN。。。

function getMinutesBetweenDates(startDate, index) {
    var endDate = new Date();
    var diff = endDate - startDate;
    return (diff / 60000);
}

谢谢你的帮助。

我认为问题在于调用函数的方式。

你应该像下面这样称呼它

var startDate = new Date("2015-02-05T03:11:33.301Z");
getMinutesBetweenDates(startDate); 

它会打印出类似下面的东西

11.711916666666667

只需在返回值之前使用Math.floor即可获得11的结果。

现代浏览器将正确解析OP格式(ISO 8601版本)的字符串,而IE 8及更低版本的旧浏览器则无法解析。手动解析字符串要安全得多:

function parseISOutc(s) {
  var b = s.split(/'D/);
  return new Date(Date.UTC(b[0], b[1] - 1, b[2], b[3], b[4], b[5], (b[6] || 0)));
}

现在你的功能可以是:

function getMinutesBetweenDates(startDate) {
    return ((new Date() - parseISOutc(startDate)) / 6e4 | 0) + ' minutes ago';
}

索引参数未使用,所以我删除了它。

试试这个,

您必须将startDate转换为Date对象,即使它是Date对象的JSON格式。原因是,当进行减法运算时,会调用并减去Date对象的valueOf方法。valueOf方法的返回值在Date对象和JSON字符串中不同。

function getMinutesBetweenDates(startDate) {
    var endDate = new Date();
    var startDate = new Date(startDate);
    document.write(startDate.valueOf());
    var diff = endDate - startDate;
    return (diff / 60000);
}
document.write(getMinutesBetweenDates("2015-02-05T03:11:33.301Z"));