Javascript,小时比较

时间:2010-06-18 09:07:44

标签: javascript datetime time

有两个字符串(开始和结束时间),形式为“16:30”,“02:13”我想比较它们并检查间隙是否大于5分钟。

如何通过简单的方式在Javascript中实现这一目标?

4 个答案:

答案 0 :(得分:2)

function parseTime(time) {
  var timeArray = time.split(/:/);
  // Using Jan 1st, 2010 as a "base date". Any other date should work.
  return new Date(2010, 0, 1, +timeArray[0], +timeArray[1], 0);
}

var diff = Math.abs(parseTime("16:30").getTime() - parseTime("02:13").getTime());
if (diff > 5 * 60 * 1000) { // Difference is in milliseconds
  alert("More that 5 mins.");
}

你需要在午夜结束吗?那就更困难了。例如,23:5900:01会产生23小时58分钟而不是2分钟的差异。

如果是这种情况,您需要更密切地定义案例。

答案 1 :(得分:1)

您可以执行以下操作:

if (((Date.parse("16:30") - Date.parse("02:13")) / 1000 / 60) > 5)
{
}

答案 2 :(得分:1)

// time is a string having format "hh:mm"
function Time(time) {
    var args = time.split(":");
    var hours = args[0], minutes = args[1];

    this.milliseconds = ((hours * 3600) + (minutes * 60)) * 1000;
}

Time.prototype.valueOf = function() {
    return this.milliseconds;
}

// converts the given minutes to milliseconds 
Number.prototype.minutes = function() {
    return this * (1000 * 60);
}

减去时间会强制对象通过调用返回给定时间的valueOf方法来评估它的值,以毫秒为单位。 minutes方法是将给定的分钟数转换为毫秒的另一种方便方法,因此我们可以将其作为整个比较的基础。

new Time('16:30') - new Time('16:24') > (5).minutes() // true

答案 3 :(得分:1)

这包括检查午夜是否在两次之间(根据你的例子)。

var startTime = "16:30", endTime = "02:13";

var parsedStartTime = Date.parse("2010/1/1 " + startTime),
    parsedEndTime = Date.parse("2010/1/1 " + endTime);

// if end date is parsed as smaller than start date, parse as the next day,
// to pick up on running over midnight
if ( parsedEndTime < parsedStartTime ) ed = Date.parse("2010/1/2 " + endTime);

var differenceInMinutes = ((parsedEndTime - parsedStartTime) / 60 / 1000);
if ( differenceInMinutes > 5 ) {
   alert("More than 5 mins.");
}