如何使用纯JavaScript获得两个日期之间的总分钟差异

时间:2016-10-18 05:35:25

标签: javascript date

更新了我的问题

如何在

时使用纯JavaScript获取两个日期之间的总差异

条件(1)::同月,同年但日期变更

newDate: 18/10/2016 0:50
oldDate: 17/10/2016 23:05

条件(2)::当月的上一日期和下个月的第一个日期

newDate: 1/11/2016 0:50  
oldDate: 31/10/2016 23:05

条件(3)::年份的最后日期和新年的第1个日期

newDate: 1/1/2017 0:50  
oldDate: 31/12/2016 23:05

注意:请查看newDate和oldDate以了解条件。

感谢

2 个答案:

答案 0 :(得分:0)

使用以下纯JavaScript代码完成我的要求

在我的代码中,starttime和endtime是

//var startTime = localStorage.getItem("starttime");
//var endTime = new Date();

这里的例子。

var startTime = new Date("Sat Dec 31 2016 15:35:57 GMT+0530 (India Standard Time)");
var endTime = new Date("Sun Jan 1 2017 15:35:57 GMT+0530 (India Standard Time)");

var totalMiliseconds = endTime - startTime;
alert(totalMiliseconds);
//output:: 86400000

var totalSeconds = totalMiliseconds/1000;
alert(totalSeconds);
//output:: 86400

var totalMinuts = totalSeconds/60;
alert(totalMinuts);
//output:: 1440

var totalHours = totalMinuts/60;
alert(totalHours);
//output:: 24

这符合我的所有三个条件。

感谢您的支持!!!

答案 1 :(得分:0)

由于您不想使用库来解析日期字符串,因此您可以编写一个简单的函数,例如:



// Parse date string in "Sat Dec 31 2016 15:35:57 GMT+0530 (India Standard Time)" format
function parseDate(s) {
  // Split into tokens
  var b = s.match(/\w+/g) || [];
  var months = 'jan feb mar apr may jun jul aug sep oct nov dec'.split(' ');
  // Determine offset in minutes
  var offSign = /GMT+/.test(s)? -1 : 1;
  var offset = b[8].substr(0,2)*60 + +b[8].substr(2,2);
  // Create date, applying offset to minutes
  var date = new Date(Date.UTC(b[3],
             months.indexOf(b[1].toLowerCase()), 
             b[2], 
             b[4],
             +b[5] + (offSign*offset),
             b[6]));
  return date;
}

var d = parseDate("Sat Dec 31 2016 15:35:57 GMT+0530 (India Standard Time)")
console.log('UTC: ' + d.toISOString() + '\n' +
            'Local: ' + d.toLocaleString());