Javascript 当前日期正在回滚到上个月
我的api的日期时间为2018-09-01T00:00:00.000Z。这是frame.scandate 我的计划中还有一个日期是2018-09。这简直是丑闻。这些可以是任何年/月组合,我只是举个例子 我的代码看起来像Javascript 当前日期正在回滚到上个月,javascript,angular,typescript,momentjs,Javascript,Angular,Typescript,Momentjs,我的api的日期时间为2018-09-01T00:00:00.000Z。这是frame.scandate 我的计划中还有一个日期是2018-09。这简直是丑闻。这些可以是任何年/月组合,我只是举个例子 我的代码看起来像 this.allStations.forEach(station => { station.frames.forEach(frame => { if(moment(frame.scandate).isSame(momen
this.allStations.forEach(station => {
station.frames.forEach(frame => {
if(moment(frame.scandate).isSame(moment(scandate), 'month')){
total+=frame.framesTotal;
}
})
这将使上一个frame.scandate和当前的scandate相匹配
这:
将输出以下内容:
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;
}
})
.add1,“分钟”是此处的关键更改
这是因为frame.scandate值具有00:00:00Z时间值吗?任何解释都将不胜感激。时区可能有问题 这个脚本在西班牙运行
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'))
产出2018-09-01
我们可以通过如下方式初始化frame.scandate来解决此问题:
使用moment.utc而不是满足输出期望的瞬间 我得到了2018-09这两个数字:我假设由于你所在的时区,日期从午夜向后滚动,最后是2019-08-31。非常有趣,我用你的小提琴得到了与我问题中相同的答案:向后滚动仍在发生。那可能是因为我的时区。我会做一些调查的,谢谢!克里斯·G为我回答了类似的问题;他甚至给了他正确的答案,而给了我错误的答案。我会做一些调查,然后再报告。这绝对是时区的东西;日期数据以毫秒精度的unix时间存储,然后根据其时区将其表示回用户。谢谢你,我真的很感激。我用moment.utc来初始化我的矩对象,回答了上面的问题。如果你想复制我的答案文本并放到你的文本中,我会将其标记为已回答。继续并删除你的答案;编辑我的,我会接受编辑
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'))
frame.scandate = moment.utc('2018-09-01T00:00:00.000Z');