Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 片刻。I之后未正确返回_Javascript_Momentjs - Fatal编程技术网

Javascript 片刻。I之后未正确返回

Javascript 片刻。I之后未正确返回,javascript,momentjs,Javascript,Momentjs,我有一个存储在UTC时间的字符串。我正在尝试查看此时间是否在当前UTC时间之后。我使用的是momentjs,当相差仅1小时时,isAfter()方法返回的值不正确 活动时间变量发生在utc 15:00。当前时间设置为16:00 utc。所以我认为,active\u time.isAfter(current\u time)应该返回false,但它正在返回true。如何使其返回false JSIDLE链接: 代码: 查看toDate方法查看内部js日期: console.log('active_ti

我有一个存储在UTC时间的字符串。我正在尝试查看此时间是否在当前UTC时间之后。我使用的是momentjs,当相差仅1小时时,isAfter()方法返回的值不正确

活动时间变量发生在utc 15:00。当前时间设置为16:00 utc。所以我认为,
active\u time.isAfter(current\u time)
应该返回
false
,但它正在返回
true
。如何使其返回
false

JSIDLE链接:

代码:


查看
toDate
方法查看内部js日期:

console.log('active_time =',active_time.toDate());
console.log('current_time =',current_time.toDate());
console.log( active_time.isAfter(current_time) ); //Why does this return true?

active_time = Thu Jun 04 2015 15:00:00 GMT-0700 (Pacific Daylight Time)
current_time = Thu Jun 04 2015 09:00:00 GMT-0700 (Pacific Daylight Time)
true

这将取决于您所在的时区。如果您的日期是ISO8601格式或时间戳,请不要使用moment.isAfter。它比比较两个日期对象慢150倍:


即使第一个日期字符串是utc,您仍然需要在比较之前将该时刻置于utc模式。请看以下文档:

//字符串已处于utc时间,但仍需要将其置于utc模式
var active_time=时刻utc('2015-06-04T15:00Z','YYYY-MM-DD[T]HH:MM[Z]');
//使用utc时间将当前时间转换为力矩对象
var current_time=时刻utc('2015-06-04T16:00Z','YYYY-MM-DD[T]HH:MM[Z]');
log('active_time=',active_time.format());
log('current_time=',current_time.format());
log(活动时间.isAfter(当前时间))

向我返回
false
:奇怪。对我来说总是
正确的
。我正在使用Macbook,我不知道这是否与它有关。我没有从isAfter获得可靠的结果。如果我在这两个时刻都使用.unix(),我可以进行比较,但如果它们在不同的时区或来自不同的来源,它就不能可靠地工作。有没有办法对此进行检查?与我的时区相比,我得到的响应的时间格式为
YYYY-MM-DD[T]HH:MM[Z]
已经是UTC。使用矩.UTC()将日期创建为UTC日期。请参见momentjs.com/docs/#/parsing/utc/
console.log('active_time =',active_time.toDate());
console.log('current_time =',current_time.toDate());
console.log( active_time.isAfter(current_time) ); //Why does this return true?

active_time = Thu Jun 04 2015 15:00:00 GMT-0700 (Pacific Daylight Time)
current_time = Thu Jun 04 2015 09:00:00 GMT-0700 (Pacific Daylight Time)
true
 var active_time = new Date('2015-06-04T15:00Z');
 var current_time = new Date('2015-06-04T16:00Z');

 console.log('active_time =',active_time);
 console.log('current_time =',current_time);
 console.log( active_time > current_time );