使用javascript / jquery以12小时格式添加小时

时间:2015-04-09 04:49:22

标签: javascript jquery

我们如何使用javascript / jquery将小时数添加到12小时格式时间, 示例:在12:00 AM添加2小时,结果应为02:00 AM  在09:00 PM加8小时,结果应该是05:00 AM

3 个答案:

答案 0 :(得分:1)

以下函数采用表示时间的字符串和表示要添加到该时间的小时数的整数。您也可以选择传递整数分钟。结果是一个格式为'h:mm xm'的字符串。

function addTimeToString(timeString, addHours, addMinutes) {
  // The third argument is optional.
  if (addMinutes === undefined) {
    addMinutes = 0;
  }
  // Parse the time string. Extract hours, minutes, and am/pm.
  var match = /(\d+):(\d+)\s+(\w+)/.exec(timeString),
      hours = parseInt(match[1], 10) % 12,
      minutes = parseInt(match[2], 10),
      modifier = match[3].toLowerCase();
  // Convert the given time into minutes. Add the desired amount.
  if (modifier[0] == 'p') {
    hours += 12;
  }
  var newMinutes = (hours + addHours) * 60 + minutes + addMinutes,
      newHours = Math.floor(newMinutes / 60) % 24;
  // Now figure out the components of the new date string.
  newMinutes %= 60;
  var newModifier = (newHours < 12 ? 'AM' : 'PM'),
      hours12 = (newHours < 12 ? newHours : newHours % 12);
  if (hours12 == 0) {
    hours12 = 12;
  }
  // Glue it all together.
  var minuteString = (newMinutes >= 10 ? '' : '0') + newMinutes;
  return hours12 + ':' + minuteString + ' ' + newModifier;
}

function test(timeString, addHours, addMinutes) {
  document.write(timeString + ' + ' + addHours + ' h ' +
      (addMinutes || 0) + ' m &rarr; ' +
      addTimeToString(timeString, addHours, addMinutes) + '<br>');
}

test('11:30 AM', 1, 45);
test('9:00 PM', 4);
test('11:55 PM', 0, 5);  // In five minutes it will be midnight: 12 am.
test('12:00 AM', 0, 5);  // Five minutes after midnight: 12:05 am.
test('11:55 AM', 0, 5);  // In five minutes it will be noon: 12 pm.
test('12:00 PM', 0, 5);  // Five minutes after noon: 12:05 pm.

答案 1 :(得分:0)

&#13;
&#13;
function formatTime(date) {

    var meridiem = 'AM',
        hours;
    
    // Add the hours
    date.setHours(date.getHours() + 2);

    hours = date.getHours();

    if (hours >= 12) {
        meridiem = 'PM';
        hours = hours % 2;
    }
    
    hours = (hours === 0) ? 12 : hours;   
    
    return formatNumber(hours) + ':' + formatNumber(date.getMinutes()) + ' ' + meridiem;

}

function formatNumber(number) {
    return ('0' + number).slice(-2);
}

alert(formatTime(new Date()));
&#13;
&#13;
&#13;

答案 2 :(得分:0)

我在Date原型类中添加了几个方法。

完整解决方案

Date.createDateFromTime = function(hours, minutes) {
  var date = new Date();
  date.setTime(hours, minutes);

  return date;
}

Date.prototype.setTime = function(hours, minutes) {
  this.setHours(hours);
  this.setMinutes(minutes);

  return this.displayTime();
}

Date.prototype.displayTime = function() {
  function addZero(number) {
    if (number < 10) {
      return "0" + number.toString();
    } else {
      return number.toString();
    }
  }

  var hours = this.getHours();
  var minutes = this.getMinutes();
  var am_pm = "AM";

  if (hours >= 12) {
    am_pm = "PM"
    hours -= 12;
  } 

  if (hours == 0) hours = 12;

  hours = addZero(hours);
  minutes = addZero(minutes);

  return hours + ":" + minutes + " " + am_pm;
}

Date.prototype.addHours = function(hours) {
  this.setHours(this.getHours() + hours);

  return this.getHours();
}

示例

date = Date.createDateFromTime(19, 20);
date.displayTime(); // "07:20 PM"
date.addHours(4);
date.displayTime(); // "11:20 PM"
date.addHours(5);
date.displayTime(); // "04:20 AM"