Как я могу сравнить время, прошедшее за день (более 23:59) - PullRequest
0 голосов
/ 22 апреля 2020

Я написал код, который сравнивает время в операторе if. Времена представляются в виде строк.

//evaluates to true
if (time > startingTime && time < endingTime) 
//time = "2230" startingTime = "2200" endingTime = "2330" 

Это хорошо, если только значение окончания не превысило 23: 39

//evaluates to false
if (time > startingTime && time < endingTime) 
//time="2230" startingTime = "2200" endingTime = "0030" 

Мне было интересно, есть ли быстрый способ исправить это, что я Я не думал о.

В качестве альтернативы, вот как я использую Момент. js, чтобы установить время, и я подумал, что, возможно, будет способ добавить параметр 'day', чтобы это могло быть фиксированным

const endingTime = moment(startingTime, 'HH:mm')
            .add(minutesToAdd, 'minutes')
            .format('HHmm') //outputs the time an event ends
                            //after adding its duration to its starting time

Но тогда должно быть зафиксировано окончательное форматирование (я полагаю), а также начальное время - чтобы их можно было сравнить позже. Я еще не нашел способ сделать это в момент. js документация библиотеки.

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

У вас нет возможности узнать, находится ли время в пределах одного дня, если вы не используете дату и время.

Момент. js решение:

const startingTime = moment();
const endingTime = moment(startingTime)
        .add(minutesToAdd, 'minutes');

Простой JS раствор (эпоха):

const startingTime = Date.now();
const endingTime = startingTime + minutesToAdd * 60 * 1000;
1 голос
/ 22 апреля 2020

Я думаю, что это больше вопрос логики c, чем момента. js конфигурация библиотеки: я не думаю, что может существовать момент. js настройка для его решения. День у вас не для справки, а час; Вы четко предполагаете, что начало - до конца ... И что вы можете рассмотреть максимальный цикл в 24 часа. В этот момент вы должны выяснить, думаете ли вы о полуночи или находитесь в тот же день. Я думаю, вам нужны такие рассуждения:

if (startingTime < endingTime) // you are in the same day
{
    if (time > startingTime && time < endingTime)
    {
        ...
    }
}
else  // startingTime>endingTime: it means ending time is after the midnight
{
    if ( (time > startingTime && time <= 2359) || (time > 0 && time < endingTime) )
    {
        ...
    }
}

Надеюсь, я понимаю вашу проблему, и это поможет вам. Позвольте мне добавить небольшую ничью, чтобы объяснить, что простые логики c лучше .. compare time in start and end after the midnight

...