我有一个来自{} {1}}的日期时间。这是2018-09-01T00:00:00.000Z
。
我在程序中生成的另一个日期为frame.scandate
。这只是2018-09
。这些可能适用于任何年份/月份的组合,我仅举几个例子。
我的代码看起来像
scandate
这将使先前的 this.allStations.forEach(station => {
station.frames.forEach(frame => {
if(moment(frame.scandate).isSame(moment(scandate), 'month')){
total+=frame.framesTotal;
}
})
与当前的frame.scandate
相匹配。
此:
scandate
将输出以下内容:
scandate = '2018-09';\
frame.scandate = '2018-09-01T00:00:00.000Z';
console.log(moment(scandate).format('YYYY-MM'));
console.log(moment(frame.scandate).format('YYYY-MM'));
我通过以下方法解决了这个问题:
2018-09
2018-08
this.allStations.forEach(station => {
station.frames.forEach(frame => {
if(moment(frame.scandate).add(1, 'minute').isSame(moment(scandate), 'month')){
total+=frame.framesTotal;
}
})
是此处的主要更改。
这是因为.add(1, 'minute')
值具有frame.scandate
时间值吗?任何解释将不胜感激。
答案 0 :(得分:1)
There's probably something going on with the timezones.
This script, ran in Spain
var moment = require('moment'); // This is because I've tested it in a nodejs environment
var scandate = '2018-09';
var result = moment(scandate);
console.log(moment(result).format('YYYY-MM-DD'))
Outputs 2018-09-01
We could get around this by initializing frame.scandate
like so:
frame.scandate = moment.utc('2018-09-01T00:00:00.000Z');
With moment.utc()
instead of just moment()
the output expectations are met.