JS AM / PM时间总是显示AM

时间:2016-10-03 01:51:55

标签: javascript time

我在javascript中制作一个简单的时间计算器。为简单起见,我已将时间转换为12小时而不是24小时,但是我用于计算上午/下午的代码总是显示am。有什么理由会发生这种情况吗?

这是我的代码:

function solveTime(x) {
    var suffixSolve = (utcHours + x) % 24;
    var suffix = "am";
    if (utcHours > 12) {
        var suffix = "pm";
    }
    if (utcMinutes == 0) {
        utcMinutesLead = "00";
    }
    if (utcMinutes < 10) {
        utcMinutesLead = "0" + utcMinutes;
    }
    var timeSolve = (((utcHours + x) + 11) % 12 + 1);
    var timeTotal = timeSolve + ":" + utcMinutesLead + " " + suffix;
    var utcMod = x;
    if (utcMod > 0) {
       utcMod = "+" + utcMod;
    }
    document.getElementById(x).innerHTML = "(UTC" + utcMod + ") " + timeTotal;
}

这是utcHours背后的代码

var masterTimeUTC = new Date();
var utcHours = masterTimeUTC.getUTCHours();
var utcMinutes = masterTimeUTC.getUTCMinutes();
var utcSeconds = masterTimeUTC.getUTCSeconds();
var utcMinutesLead = masterTimeUTC.getUTCMinutes();

此处示例:http://codepen.io/markgamb/pen/gwGkbo

1 个答案:

答案 0 :(得分:0)

问题是您应该检查suffixSolve是否大于12而不是utcHours,因为utcHours由于x的值而没有变化。既然你可以向前和向后移动小时,我创建了一个变量shift来处理它。

&#13;
&#13;
function solveTime(x) {
  if (x < 0) {
    var shift = 24 + x;
  } else {
    var shift = x;
  }

  var suffixSolve = (utcHours + shift) % 24;
  var suffix = "am";
  if (suffixSolve > 12) {
    suffix = "pm";
  }
  if (utcMinutes == 0) {
    utcMinutesLead = "00";
  }
  if (utcMinutes < 10) {
    utcMinutesLead = "0" + utcMinutes;
  }
  var timeSolve = (((utcHours + x) + 11) % 12 + 1);
  var timeTotal = timeSolve + ":" + utcMinutesLead + " " + suffix;
  var utcMod = x;
  if (utcMod > 0) {
    utcMod = "+" + utcMod;
  }
  document.getElementById(x).innerHTML = "(UTC" + utcMod + ") " + timeTotal;
}
var masterTimeUTC = new Date();
var utcHours = masterTimeUTC.getUTCHours();
var utcMinutes = masterTimeUTC.getUTCMinutes();
var utcSeconds = masterTimeUTC.getUTCSeconds();
var utcMinutesLead = masterTimeUTC.getUTCMinutes();
solveTime(4);
solveTime(0);
solveTime(-8);
&#13;
<div id="4"></div>
<div id="-8"></div>
<div id="0"></div>
&#13;
&#13;
&#13;