得到时间回到12而不是0

时间:2012-02-26 22:15:28

标签: javascript time

我有一个if语句,在它到达11:45之后将时间改回12:

        i = (i >= 192) ? i - 192 : ( i >= 96) ? i - 96 : i
        var mins = (i * 15 % 60)
        var hours = Math.floor(i * 15 / 60)
        var ampm = (hours >= 12) ? "PM" : "AM"


        hours = (hours == 0) ? 12 : (hours >= 12) ? hours - 12 : hours;


        var nextMins, nextHours = hours;
        switch (mins) {
            case 0:
                mins = "";
                nextMins = 15;
                break;
            case 45:
                nextMins = "";
                nextHours = hours+1;
                break;
            default:
                nextMins = mins + 15;
                break;

        }

        var time = hours + (mins == "" ? "" : ":" + mins) + " - " + nextHours + (nextMins == "" ? "" : ":" + nextMins) + ampm

它以15分钟的间隔变化,问题是它将从12开始,但在再次达到12:00之后,它将显示为0:15,0:30,0:45。而不是12:15,12:30,12:45

我认为if语句的这一部分会这样做:

hours = (hours == 0) ? 12

但是没有用?

3 个答案:

答案 0 :(得分:7)

最简单的方法可能是

hours = (hours % 12) || 12;

这种方式可以处理任何数小时的正整数(例如,36仍会返回12)。

答案 1 :(得分:3)

应该阅读

hours = (hours == 0) ? 12 : (hours > 12) ? hours - 12 : hours;

通过使用> =您当前包含12作为从中扣除12的数字。

答案 2 :(得分:1)

hours = (hours == 0) ? 12 : hours;

是三元条件的完整用法。但为什么不使用简单的if语句?

if(hours == 0)
  hours = 12;