Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中获得两个原始日期之间的分钟差?_Javascript_Html_Date_Time - Fatal编程技术网

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

如何在javascript中获得两个原始日期之间的分钟差?,javascript,html,date,time,Javascript,Html,Date,Time,如何在javascript中获得两个原始日期之间的分钟差?i、 e.用作“2分钟前”、“10分钟前”等 我所说的原始数据是指这种格式->2015-02-05T03:11:33.301Z(var x=新日期() 这就是我所拥有的,但我总是在返回值中得到NaN function getMinutesBetweenDates(startDate, index) { var endDate = new Date(); var diff = endDate - startDate;

如何在javascript中获得两个原始日期之间的分钟差?i、 e.用作“2分钟前”、“10分钟前”等

我所说的原始数据是指这种格式->2015-02-05T03:11:33.301Z(var x=新日期()

这就是我所拥有的,但我总是在返回值中得到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
它将打印类似于贝娄的内容

var startDate = new Date("2015-02-05T03:11:33.301Z");
getMinutesBetweenDates(startDate); 
11.711916666666667
在返回值之前,只需使用
Math.floor
,即可得到
11

的结果

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

函数GetMinutesBetweenDate(startDate){
var endDate=新日期();
var startDate=新日期(startDate);
document.write(startDate.valueOf());
var diff=结束日期-开始日期;
回报率(差额/60000);
}

编写文档(getMinutesBetweenDates(“2015-02-05T03:11:33.301Z”)现代浏览器可以正确解析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';
}

索引参数未使用,因此我将其删除。

如何调用此函数??getMinutesBetweenDates(aux[I]['date'],I);假设aux[i]['date']是另一个新的日期(),如果startDate是日期,则函数将返回十进制分钟数的值。因此,截断返回值以删除小数部分并添加
“分钟前”
。如果您得到的是NaN,则startDate不是日期对象。是不是
(起始日期的实例)
?该死的。。。我没想到。。。在调用函数之前,使用JSON.parse解析startDate。。。因此,这只是日期的格式,而不是日期的实例:(在IE 8及更低版本中,这将很高兴地返回NaN.)