javascript - vue - Cómo usar Moment.JS para verificar si la hora actual está entre 2 veces
moment vue (3)
El ejemplo en esa página es
moment(''2010-10-20'').isBetween(''2010-10-19'', ''2010-10-25''); // true
no hay llamada a la función de format
como en su código, así que sugiero que intente
moment(''09:34:00'').isBetween(''08:34:00'', ''10:34:00'');
Digamos que la hora actual es 09:34:00
( hh:mm:ss
), y tengo otras dos veces en dos variables:
var beforeTime = ''08:34:00'',
afterTime = ''10:34:00'';
¿Cómo uso Moment.JS para verificar si la hora actual está entre el tiempo beforeTime
y el afterTime
?
He visto isBetween()
, y he intentado usarlo como:
moment().format(''hh:mm:ss'').isBetween(''08:27:00'', ''10:27:00'')
pero eso no funciona porque tan pronto como formateo el primer momento (hora actual) en una cadena, ya no es un objeto de momento. También he intentado usar:
moment(''10:34:00'', ''hh:mm:ss'').isAfter(moment().format(''hh:mm:ss'')) && moment(''08:34:00'', ''hh:mm:ss'').isBefore(moment().format(''hh:mm:ss''))
pero me sale false
, porque nuevamente cuando formateo la hora actual, ya no es un momento.
¿Cómo consigo que esto funcione?
Tuve que usar isBetween
y isSame
en mi caso para cubrir el tiempo before
y after
que utilicé en la condición isBetween.
function getTimeCategory(time) {
let timeCategory = '''';
const timeFormat = ''HH:mm:ss'';
if (
time.isBetween(moment(''00:00:00'', timeFormat), moment(''04:59:59'', timeFormat)) ||
time.isSame(moment(''00:00:00'', timeFormat)) ||
time.isSame(moment(''04:59:59'', timeFormat))
) {
timeCategory = ''DAWN'';
} else if (
time.isBetween(moment(''05:00:00'', timeFormat), moment(''11:59:59'', timeFormat)) ||
time.isSame(moment(''05:00:00'', timeFormat)) ||
time.isSame(moment(''11:59:59'', timeFormat))
) {
timeCategory = ''MORNING'';
} else if (
time.isBetween(moment(''12:00:00'', timeFormat), moment(''16:59:59'', timeFormat)) ||
time.isSame(moment(''12:00:00'', timeFormat)) ||
time.isSame(moment(''16:59:59'', timeFormat))
) {
timeCategory = ''NOON'';
} else if (
time.isBetween(moment(''17:00:00'', timeFormat), moment(''23:59:59'', timeFormat)) ||
time.isSame(moment(''17:00:00'', timeFormat)) ||
time.isSame(moment(''23:59:59'', timeFormat))
) {
timeCategory = ''NIGHT'';
}
return timeCategory;
}
- Puede pasar instancias de momento a
isBetween()
- omita las llamadas
format()
, lo que desea es pasar formatos de análisis como int en el primer momento () de su segundo intento.
Eso es todo:
var format = ''hh:mm:ss''
// var time = moment() gives you current time. no format required.
var time = moment(''09:34:00'',format),
beforeTime = moment(''08:34:00'', format),
afterTime = moment(''10:34:00'', format);
if (time.isBetween(beforeTime, afterTime)) {
console.log(''is between'')
} else {
console.log(''is not between'')
}
// prints ''is between''