如何使用Moment.JS检查当前时间是否在2次之间
How to use Moment.JS to check whether the current time is between 2 times
假设当前时间是09:34:00
(hh:mm:ss
),我在两个变量中有另外两个时间:
var beforeTime = '08:34:00',
afterTime = '10:34:00';
如何使用Moment.JS检查当前时间是否在beforeTime
和afterTime
之间?
我看过isBetween()
,我试着像一样使用它
moment().format('hh:mm:ss').isBetween('08:27:00', '10:27:00')
但这不起作用,因为一旦我将第一个(当前时间)时刻格式化为字符串,它就不再是一个时刻对象。我也尝试过使用:
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'))
但我得到了false
,因为当我再次格式化当前时间时,它不再是一个瞬间。
我该如何让它发挥作用?
- 可以将力矩实例传递给
isBetween()
- 去掉
format()
调用,您想要的是在第二次尝试的第一个moment()中传递解析格式,比如int
仅此而已:
const format = 'hh:mm:ss';
// var time = moment() gives you current time. no format required.
const time = moment('09:34:00', format);
const beforeTime = moment('08:34:00', format);
const afterTime = moment('10:34:00', format);
if (time.isBetween(beforeTime, afterTime)) {
console.log('is between');
} else {
console.log('is not between');
}
// prints 'is between'
在我的情况下,我必须使用isBetween
和isSame
来覆盖我在isBetween条件中使用的before
和after
时间。
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;
}
我使用了矩函数组合isSameOrAfter和isSameOrBefore,而不是isBetween。
if(moment(currentTime,'HH:mm:ss').isSameOrAfter(moment(shift_dayFrom,'HH:mm:ss')) &&
moment(currentTime,'HH:mm:ss').isSameOrAfter(moment(shift_dayTo,'HH:mm:ss')))
const beforeTime = moment(t, "HH:mm");
const afterTime = moment(t2, "HH:mm");
const time = moment(dueTime, "HH:mm");
if(time.isSameOrAfter(beforeTime) && time.isSameOrBefore(afterTime))
{
}
该页面上的示例是
moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true
在你的代码中没有对format
函数的调用,所以我建议尝试
moment('09:34:00').isBetween('08:34:00', '10:34:00');
相关文章:
- 如何检查日期选择器和时间选择器元素是否使用JQuery/Javascript设置
- HTML 5 音频 :是否有在更改缓冲持续时间时触发的事件
- URL 长度是否会导致页面加载时间不同
- 是否可以在javascript中访问 src的文件创建时间
- 检查JavaScript中的日期时间是否相等时出现错误结果
- 如果系统时间发生更改,setTimeout是否有效
- 使用JS检查用户是否在EST时区和设置的EST时间范围内
- 流星是否提供时间选择器功能
- 计算日期选择器+时间选择器是否在东部标准时区的过去
- 如何使用Moment.JS检查当前时间是否在2次之间
- 检查是否在一定时间间隔内加载了多个图像;如果没有,则替换为其他 URL
- JavaScript 检查时间范围是否重叠
- 删除不需要的javascript和css是否包括减轻网页加载时间
- 异步加载的脚本是否会影响其他脚本的加载时间
- Javascript检查一段时间内是否没有发生某些事情
- jQuery - 检查当前日期和时间是否在所选日期和时间的 24 小时内
- 是否可以根据时间进行重定向
- 在JavasScript中是否有任何时间当“!value ?null : value[0]“ 不等同于 ”value ?
- 给定一个日期/时间字符串,w javascript/jquery,你怎么能确定它是否是今天
- 检查在捐赠开始日期和结束日期之间是否已有预留时间