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时间是returnGMT+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时间是returnGMT+0000
似乎是时区问题。您的时刻返回GMT-0700,您的var time
返回GMT+0000。这似乎是时区问题。您的时刻返回GMT-0700,您的var time
返回GMT+0000。