вернуть время до 12, а не 0 - PullRequest
       1

вернуть время до 12, а не 0

0 голосов
/ 27 февраля 2012

У меня есть оператор if, чтобы изменить время на 12 после того, как оно достигнет 11: 45:

        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 ]

7 голосов
/ 27 февраля 2012

Самый простой способ, вероятно,

hours = (hours % 12) || 12;

Этот способ справляется с любым положительным целым числом в течение нескольких часов (например, 36 все равно вернет 12).

3 голосов
/ 27 февраля 2012

Это должно читаться как

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

Имея> =, вы в настоящее время включаете 12 как число для вычитания 12 из.

1 голос
/ 27 февраля 2012
hours = (hours == 0) ? 12 : hours;

- полное использование троичного условного слова. Но почему бы вам не использовать простое выражение if?

if(hours == 0)
  hours = 12;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...