【问题标题】:Time difference and convert into hours and minutes in javascript时差并在javascript中转换为小时和分钟
【发布时间】:2013-10-25 07:21:31
【问题描述】:

我的时间值如下 开始时间如:09:00:00, 结束时间如:10:00:00; 这里不需要日期值。 所以这个值需要计算差异并转换为小时和分钟,秒。

我试过了:

var test = new Date().getTime(startTime); 
var test1 = new Date().getTime(endTime);
var total = test1 - test;

有些时候我会得到NaN1111111 一些数字格式。

如何转换为 HH:MM:SS 或任何其他方式来查找时差。

【问题讨论】:

  • 为此使用 moment.js 而不是依赖内置的 javascripts。它将帮助您加载!
  • 嗨,感谢您的评论。如何使用和转换 hh:mm:ss 中的值

标签: javascript date datetime


【解决方案1】:

你可以取不同的时间值:

var diff = test1.getTime() - test.getTime(); // this is a time in milliseconds
var diff_as_date = new Date(diff);
diff_as_date.getHours(); // hours
diff_as_date.getMinutes(); // minutes
diff_as_date.getSeconds(); // seconds

【讨论】:

  • 嗨,我试过了,但由于对象 1382687270743 没有方法“getTime”而出现错误。错误指向 test1.getTime() 中的位置。请帮助我如何解决问题。
  • 你应该使用test = new Date(startTime)test1 = new Date(endTime)
  • 如果我使用之前的建议,在打印 diff.getHours() 时出现错误,因为 Object NaN 没有方法 'getHours' 。如何解决问题。
  • 如果new Date(startTime) 给你一个错误,试试test = new Date('1970-01-01 ' + startTime)
  • 我遇到的另一个问题是new Date(diff) 返回的日期与时区偏移量(在我的情况下为 3 小时)。我使用getUTCHours()getUTCMinutes()getUTCSeconds() 来获得正确的值。
【解决方案2】:

    var startTime = "09:00:00";
    var endTime = "10:30:00";
    
    var todayDate = moment(new Date()).format("MM-DD-YYYY"); //Instead of today date, We can pass whatever date        

    var startDate = new Date(`${todayDate} ${startTime}`);
    var endDate = new Date(`${todayDate } ${endTime}`);
    var timeDiff = Math.abs(startDate.getTime() - endDate.getTime());

    var hh = Math.floor(timeDiff / 1000 / 60 / 60);   
    hh = ('0' + hh).slice(-2)
   
    timeDiff -= hh * 1000 * 60 * 60;
    var mm = Math.floor(timeDiff / 1000 / 60);
    mm = ('0' + mm).slice(-2)

    timeDiff -= mm * 1000 * 60;
    var ss = Math.floor(timeDiff / 1000);
    ss = ('0' + ss).slice(-2)
    
    alert("Time Diff- " + hh + ":" + mm + ":" + ss);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.28.0/moment.min.js"></script>

【讨论】:

  • 嗨,感谢 cmets.but 在声明中 var startDate = new Date("1970 年 1 月 1 日" + startTime);在这个声明中没有给出日期如何计算。请帮助我
  • 你好,红菜。两个不同的时间有何不同。对于采样时间 1 = 02:45 和时间 2 = 00:55。这是我需要减少时间并转换为小时和分钟。任何人都可以帮助我。我试过 var sp = time1.split(":"); var sp1 = time2.split(":"); var th = sp[0];var tm = sp[1]; var tth = sp1[0];var ttm = spl[1]; var finalh = 1 * sp[0] - 1 * sp1[0]; var finalmin = 1 * sp[1] - 1 * sp1[1];如果分钟 sp 大于 sp1 ,则此工作正常,但其他情况下,分钟数为负值。如何将值转换为小时和分钟。请帮助我。
【解决方案3】:
function diff(start, end) {
start = start.split(":");
end = end.split(":");
var startDate = new Date(0, 0, 0, start[0], start[1], 0);
var endDate = new Date(0, 0, 0, end[0], end[1], 0);
var diff = endDate.getTime() - startDate.getTime();
var hours = Math.floor(diff / 1000 / 60 / 60);
diff -= hours * 1000 * 60 * 60;
var minutes = Math.floor(diff / 1000 / 60);

// If using time pickers with 24 hours format, add the below line get exact hours
if (hours < 0)
   hours = hours + 24;

return (hours <= 9 ? "0" : "") + hours + ":" + (minutes <= 9 ? "0" : "") + minutes;
}

【讨论】:

    猜你喜欢
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 2021-02-22
    相关资源
    最近更新 更多