如何获取日期和确切的分钟,javascript中两个日期的确切时间?

时间:2017-06-08 16:37:15

标签: javascript jquery angularjs momentjs

我有开始日期时间和结束时间,我需要分割两个日期中的天数,小时数,分钟数

例如,

    startdatetime =“09-06-2017 10:30”     enddatetime =“10-06-2017 11:45”

我需要这个结果:1天1小时15分钟

我试试这个

var t = end - start;
var z = parseInt(t / 1000 / 60);
var time = display(z);
function display(a)
{
    console.log(a);
    var hours = Math.trunc(a/60);
    var minutes = a % 60; 
    var one_day=1000*60*60*24
    var days = Math.ceil(a/one_day)
    var time = [hours,minutes,days];
    return time;
}

我得到以下1天24小时15分钟,任何人都可以帮助我,如果它的新逻辑意味着我将改变它,提前感谢

5 个答案:

答案 0 :(得分:1)

好吧,如果你查看javascript Date对象的文档,就会有一个getTime() method。您还可以使用valueOf()方法。它们都返回表示Date对象的毫秒数。

您可以在两个Date对象上调用它,然后找到差异。一旦你有差异,你可以找到秒,分钟,小时,天等的数量。这是一个例子:

var start = new Date(*some date*);
var end = new Date(*some date*);
var dif = end.valueOf() - start.valueOf();
if (dif >= 0) {
    var secs = Math.floor(dif / 1000 % 60);
    var mins = Math.floor(dif / 1000 / 60 % 60);
    var hrs = Math.floor(dif / 1000 / 60 / 60 % 24);
    var days =
        Math.floor(dif / 1000 / 60 / 60 / 24 % 365);
    var yrs =
        Math.floor(dif / 1000 / 60 / 60 / 24 / 365);

答案 1 :(得分:1)

尝试以下方法:

var t = end - start;
var z = parseInt(t / 1000 / 60);
var time = display(z);
function display(minutes)
{
    var hours = (minutes / 60 | 0) % 24;
    var minutes = (minutes | 0) % 60;
    var days = minutes / 60 / 24 | 0;
    return [hours, minutes, days];
}

请注意,在javascript中,x | 0Math.floor(x)相同。

答案 2 :(得分:1)

在我看来,你的小时计算仍然有其中的日子。确定完日期后,只需在计算小时数时减去这些日期。



var start = new Date("June 09, 2017 10:30:00");
var end = new Date("June 10, 2017 11:45:00");
var t = end - start;
var z = parseInt(t / 1000 / 60);
var time = display(z);
console.log(time);
function display(a)
{
    var minutes = a % 60; 
    var one_day=1000*60*60*24
    var days = Math.ceil(a/one_day)
    var hours = Math.trunc((a-(days*1440))/60);
    var time = [hours,minutes,days];
    return time;
}




话虽如此,我强烈推荐moment.js来处理这类事情,如果可以的话。

答案 3 :(得分:1)

使用momentjs,你可以:

这是一个实时样本:



var startdatetime = "2017-06-09T07:00:01.000Z";
var enddatetime = "2017-06-10T09:00:00.000Z";
// Parse input
var mStart = moment.utc(startdatetime);
var mEnd = moment.utc(enddatetime);
// Calculate difference and create duration
var dur = moment.duration( mEnd.diff(mStart) );
// Show the result
console.log(dur.days() + ' days ' + dur.hours() + ' hour ' + dur.minutes() + ' minutes');

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;
&#13;
&#13;

如果您愿意,可以使用moment-duration-format插件在持续时间内使用format()方法获得相同的结果。这是一份工作样本:

&#13;
&#13;
var startdatetime = "2017-06-09T07:00:01.000Z";
var enddatetime = "2017-06-10T09:00:00.000Z";
// Parse input
var mStart = moment.utc(startdatetime);
var mEnd = moment.utc(enddatetime);
// Calculate difference and create duration
var dur = moment.duration( mEnd.diff(mStart) );
// Show the result
console.log(dur.format('d [day] h [hour] m [minutes]'));
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>
&#13;
&#13;
&#13;

答案 4 :(得分:1)

var startDateTime = 1497029400000;
var endDateTime = 1497120300000;
var timeDifference = endDateTime - startDateTime
// with the given dates, days equals 1.0520833333333333
// we want to extract the trailing decimal values using modulus to get the other times

function getTimeDifference(timeDifference) {
  var days = timeDifference/1000/60/60/24
  days >= 1 
    ? var dayCount = Math.trunc(days); // store the day count
    : var dayCount = 0; // it is less than one day

  // get the remaining hours
  var hours = (days % 1) * 24;
  var hoursCount = Math.trunc((days % 1) * 24);

  // get the remaining minutes
  var minutesCount = Math.ceil((hours % 1) * 60);
}