Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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 在给我一个奇怪的结果之后_Javascript_Momentjs - Fatal编程技术网

Javascript 在给我一个奇怪的结果之后

Javascript 在给我一个奇怪的结果之后,javascript,momentjs,Javascript,Momentjs,考虑到过去不到一天的时间,就在今天下午早些时候,与现在相比,我认为这是一个错误的值。相反,我得到了一个真实的答案 var time = '2018-07-12T04:00:00.000Z'; moment().isAfter(moment.utc(time), 'day'); //returns true moment().isAfter(time, 'day'); //returns true 请记住,在撰写本文时,矩()是: d:Thu Jul 12 2018 19:21:48 GMT-0

考虑到过去不到一天的时间,就在今天下午早些时候,与现在相比,我认为这是一个错误的值。相反,我得到了一个真实的答案

var time = '2018-07-12T04:00:00.000Z';
moment().isAfter(moment.utc(time), 'day'); //returns true
moment().isAfter(time, 'day'); //returns true
请记住,在撰写本文时,矩()是:

d:Thu Jul 12 2018 19:21:48 GMT-0700 (PDT) {}
_isAMomentObject:true
_isUTC:false
_isValid:true

既然moment()不是my
var time
之后的1天,为什么它会返回true。我认为是假的。

首先,你们并没有在同一时间段内进行比较

正确的方法是
time.utc().isAfter(time.utc(time),'day')

然而,在那之后,你仍然不能得到你想要的效果

为什么?

这是因为
时刻中的第二个参数。isAfter
与文档中的状态一样精确:

由于第二个参数决定精度

这意味着,当您进行
isAfter('day')
比较时,时刻将时间近似为天,因此
'2018-07-12T04:00:00.000Z'
变为
'2018-07-12'

因此,7月12日不是7月12日之后

因此,如果将“2018-07-12T23:59:59.000Z”与“2018-07-13T00:00:00.000Z”进行比较

它仍然返回给你真实的


因此,要精确地比较时间,请使用
moment.diff

首先,您不是在同一时间范围内进行比较

正确的方法是
time.utc().isAfter(time.utc(time),'day')

然而,在那之后,你仍然不能得到你想要的效果

为什么?

这是因为
时刻中的第二个参数。isAfter
与文档中的状态一样精确:

由于第二个参数决定精度

这意味着,当您进行
isAfter('day')
比较时,时刻将时间近似为天,因此
'2018-07-12T04:00:00.000Z'
变为
'2018-07-12'

因此,7月12日不是7月12日之后

因此,如果将“2018-07-12T23:59:59.000Z”与“2018-07-13T00:00:00.000Z”进行比较

它仍然返回给你真实的

因此,要精确地比较时间,请使用
矩.diff

将两者转换为utc,然后比较:

var time = '2018-07-12T04:00:00.000Z';
var momentObj = moment(new Date(2018,06,12, 19, 24, 48)).zone("-07:00");
moment.utc(momentObj).isAfter(moment.utc(time), 'day'); // returns false

似乎是时区问题。您的
moment()
正在返回您的
GMT-0700
,您的var时间是return
GMT+0000

因此,这里

将两者转换为utc,然后比较:

var time = '2018-07-12T04:00:00.000Z';
var momentObj = moment(new Date(2018,06,12, 19, 24, 48)).zone("-07:00");
moment.utc(momentObj).isAfter(moment.utc(time), 'day'); // returns false

似乎是时区问题。您的
moment()
正在返回您的
GMT-0700
,您的var时间是return
GMT+0000

似乎是时区问题。您的时刻返回GMT-0700,您的
var time
返回GMT+0000。这似乎是时区问题。您的时刻返回GMT-0700,您的
var time
返回GMT+0000。