JavaScript-获取两个日期之间的分钟

2020/10/30 00:02 · javascript ·  · 0评论

如果我有两个日期,我该如何使用JavaScript以分钟为单位获取两个日期之间的差额?

您可以签出以下代码:

var today = new Date();
var Christmas = new Date("2012-12-25");
var diffMs = (Christmas - today); // milliseconds between now & Christmas
var diffDays = Math.floor(diffMs / 86400000); // days
var diffHrs = Math.floor((diffMs % 86400000) / 3600000); // hours
var diffMins = Math.round(((diffMs % 86400000) % 3600000) / 60000); // minutes
alert(diffDays + " days, " + diffHrs + " hours, " + diffMins + " minutes until Christmas 2009 =)");

var diffMins = Math.floor((...舍弃秒,如果您不想舍入分钟。

减去2个Date对象可得到以毫秒为单位的差异,例如:

var diff = Math.abs(new Date('2011/10/09 12:00') - new Date('2011/10/09 00:00'));

Math.abs用于能够使用绝对差(因此new Date('2011/10/09 00:00') - new Date('2011/10/09 12:00')得出相同的结果)。

将结果除以1000可得到秒数。将其除以60可得到分钟数。要四舍五入,请使用Math.floorMath.ceil

var minutes = Math.floor((diff/1000)/60);

在这个例子中,结果将是720

var startTime = new Date('2012/10/09 12:00'); 
var endTime = new Date('2013/10/09 12:00');
var difference = endTime.getTime() - startTime.getTime(); // This will give difference in milliseconds
var resultInMinutes = Math.round(difference / 60000);

一个简单的函数来执行此计算:

function getMinutesBetweenDates(startDate, endDate) {
    var diff = endDate.getTime() - startDate.getTime();
    return (diff / 60000);
}

那应该以分钟为单位显示两个日期之间的时差。在浏览器中尝试:

const currDate = new Date('Tue Feb 13 2018 13:04:58 GMT+0200 (EET)')
const oldDate  = new Date('Tue Feb 13 2018 12:00:58 GMT+0200 (EET)')


(currDate - oldDate) / 60000 // 64

对于那些喜欢少量工作的人

const today = new Date();
const endDate = new Date(startDate.setDate(startDate.getDate() + 7));
const days = parseInt((endDate - today) / (1000 * 60 * 60 * 24));
const hours = parseInt(Math.abs(endDate - today) / (1000 * 60 * 60) % 24);
const minutes = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000 * 60) % 60);
const seconds = parseInt(Math.abs(endDate.getTime() - today.getTime()) / (1000) % 60); 

使用moment.js可以轻松解决此问题,例如以下示例:

var difference = mostDate.diff(minorDate, "minutes");

可以将第二个参数更改为另一个参数,请参见moment.js文档。

例如:“天”,“小时”,“分钟”等。

http://momentjs.com/docs/

可以在此处获得moment.js的CDN:

https://cdnjs.com/libraries/moment.js

谢谢。

编辑:

mostDate和minorDate应该是矩型。

编辑2:

对于那些在2020年以后阅读我的答案的人来说,momentjs现在是一个遗留项目。

如果您仍在寻找知名图书馆来完成这项工作,我建议使用date-fns

// How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?
var result = differenceInMinutes(
  new Date(2014, 6, 2, 12, 20, 0),
  new Date(2014, 6, 2, 12, 7, 59)
)
//=> 12

我在节点中解决了一些类似的问题,这很有趣。

function formatTimeDiff(date1, date2) {
  return Array(3)
    .fill([3600, date1.getTime() - date2.getTime()])
    .map((v, i, a) => {
      a[i+1] = [a[i][0]/60, ((v[1] / (v[0] * 1000)) % 1) * (v[0] * 1000)];
      return `0${Math.floor(v[1] / (v[0] * 1000))}`.slice(-2);
    }).join(':');
}

const millis = 1000;
const utcEnd = new Date(1541424202 * millis);
const utcStart = new Date(1541389579 * millis);
const utcDiff = formatTimeDiff(utcEnd, utcStart);

console.log(`Dates:
  Start   : ${utcStart}
  Stop    : ${utcEnd}
  Elapsed : ${utcDiff}
  `);

/*
Outputs:

Dates:
  Start   : Mon Nov 05 2018 03:46:19 GMT+0000 (UTC)
  Stop    : Mon Nov 05 2018 13:23:22 GMT+0000 (UTC)
  Elapsed : 09:37:02
*/

您可以在https://repl.it/@GioCirque/TimeSpan-Formatting上查看它的运行情况

您可以执行以下操作:

  1. 获取difference of dates(差异将以毫秒为单位)
  2. 转换millisecondsminutesiems/1000/60

代码:

let dateOne = new Date("2020-07-10");
let dateTwo = new Date("2020-07-11");

let msDifference =  dateTwo - dateOne;
let minutes = Math.floor(msDifference/1000/60);
console.log("Minutes between two dates =",minutes);

以下代码为我工作,

function timeDiffCalc(dateNow,dateFuture) {
    var newYear1 = new Date(dateNow);
    var newYear2 = new Date(dateFuture);

        var dif = (newYear2 - newYear1);
        var dif = Math.round((dif/1000)/60);
        console.log(dif);

}
本文地址:http://javascript.askforanswer.com/javascript-huoqulianggeriqizhijiandefenzhong.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!