如果当前时间介于两次之间

时间:2015-10-20 15:38:57

标签: javascript momentjs

我正在尝试使用momentjs查找当前本地时间是否介于两次之间。

我有以下代码:

var currentTime = moment().format('YYYY-MM-DD HH:mm');

var prefix = 'YYYY-MM-DD ';
// the prefix is because moment expects a date prefix when parsing
var start_time = moment(prefix + '16:00').format('HH:mm');
var end_time = moment(prefix + '16:30').format('HH:mm');

if( moment(currentTime).isBetween(start_time,end_time) )
    alert('TRUE');
else
    alert('FALSE');

现在我们假设时间是16:10,它应该警告TRUE,但它会警告FALSE。

为什么这不符合预期的任何想法。格式错误了吗?

2 个答案:

答案 0 :(得分:2)

如果您计划比较它们,请不要格式化从moment返回的日期。

format()返回一个字符串,而不是日期/时间可比对象。



var currentTime = moment();

var extra = moment().format('YYYY-MM-DD') + ' ';
var start_time = moment(extra + '16:00');
var end_time = moment(extra + '16:30');

if (moment(currentTime).isBetween(start_time, end_time))
  console.log('TRUE');
else
  console.log('FALSE');

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您无需格式化日期:

var currentTime = moment();

var prefix = moment();
// the prefix is because moment expects a date prefix when parsing
var start_time = prefix.add(16, 'hours');
var end_time = mprefix.add(16, 'hours').add(30, 'minutes');

if( moment(currentTime).isBetween(start_time,end_time) )
    alert('TRUE');
else
    alert('FALSE');