如何在javascript中获得两个原始日期之间的分钟差?
如何在javascript中获得两个原始日期之间的分钟差?i、 e.用作“2分钟前”、“10分钟前”等 我所说的原始数据是指这种格式->2015-02-05T03:11:33.301Z(var x=新日期() 这就是我所拥有的,但我总是在返回值中得到NaN如何在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;
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.)