2016-10-03 180 views
-1

我正在javascript中制作一个简单的时间计算器。我已将时间转换为12小时而不是24小时,但为了计算am/pm,代码总是显示am。为什么会发生这种情况?JS AM/PM时间总是显示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; 
} 

,这里是

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

例这里背后utcHours代码:http://codepen.io/markgamb/pen/gwGkbo

+1

什么是x的传球一样参数 –

+0

UTC修改,例如:-8为UTC-8 – mark

+0

你能有实时例子来说明吗? –

回答

0

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

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);
<div id="4"></div> 
 
<div id="-8"></div> 
 
<div id="0"></div>