我正在try 获取订阅模式的下一个"续订日期"(月份和年份).这就是我的设置:

var getPeriod = 'month';
// var getPeriod = 'year';

var getEffective = '2022-06-02';
var getDate = moment('2022-08-01');

if(getPeriod == 'month'){
    var getDuration = moment.duration(getDate.diff(getEffective)).months();
} else if('year'){
    var getDuration = moment.duration(getDate.diff(getEffective)).years();
}

if(getDuration >= 0){
    var getCounter = getDuration+1;
} else {
    var getCounter = 1;
}

var getRenewalNext = moment(getEffective).add(getCounter, getPeriod+'s').format('YYYY-MM-DD');

console.log('getDuration:');
console.log(getDuration);

console.log('getRenewalNext:');
console.log(getRenewalNext);

try 1:正确

var getEffective = '2022-06-01';
var getDate = moment('2022-08-01');

"getDuration:"
2
"getRenewalNext:"
"2022-09-01"

try 2:正确

var getEffective = '2022-06-03';
var getDate = moment('2022-08-01');

"getDuration:"
1
"getRenewalNext:"
"2022-08-03"

try 3:不正确

var getEffective = '2022-06-02';
var getDate = moment('2022-08-01');

"getDuration:"
2
"getRenewalNext:"
"2022-09-02"

对于最后一次try ,我得到了"2022-09-02"作为下一个续订数据,但我本以为还有1天,"下一个续订日期"是"2022-08-02".为什么是这样,还是我错过了什么?我怎么才能解决这个问题?

那是我的小提琴:https://jsfiddle.net/ja1k6owb/

推荐答案

升级到更新版本的Moment应该可以解决这个问题.

我正在使用下面的最新版本,我们得到了正确的答案.

人们应该能够找到修复问题的更改(在时刻2.2.1到2.29.4之间).

var getPeriod = 'month';
// var getPeriod = 'year';

var getEffective = '2022-06-02';
var getDate = moment('2022-08-01');

if(getPeriod == 'month'){
    var getDuration = moment.duration(getDate.diff(getEffective)).months();
} else if('year'){
    var getDuration = moment.duration(getDate.diff(getEffective)).years();
}

if(getDuration >= 0){
    var getCounter = getDuration+1;
} else {
    var getCounter = 1;
}

var getRenewalNext = moment(getEffective).add(getCounter, getPeriod+'s').format('YYYY-MM-DD');

console.log('getDuration:');
console.log(getDuration);

console.log('getRenewalNext:');
console.log(getRenewalNext);
.as-console-wrapper { max-height: 100% !important; }
<script src="https://momentjs.com/downloads/moment.js"></script>

Javascript相关问答推荐

CheckBox作为Vue3中的一个组件

VUE 3捕获错误并呈现另一个组件

对网格项目进行垂直排序不起作用

在我的index.html页面上找不到我的Java脚本条形图

MarkLogic-earch.suggest不返回任何值

使用RxJS from Event和@ViewChild vs KeyUp事件和RxJS主题更改输入字段值

如何找到带有特定文本和测试ID的div?

如何在Jest中模拟函数

如何在TransformControls模式下只保留箭头进行翻译?

打字脚本中的函数包装键入

在openstreemap/leaflet中,当鼠标在 map 上移动时,如何在小工具提示中实时显示坐标

当我单击一个按钮时,所有按钮都会自动单击

类型脚本类型声明未按预期工作

JS:以特定格式显示不同时区

使用jQuery在html Select 中查找正则表达式的值

如何在应用内Chromium浏览器中启用通知模块?(未捕获ReferenceError:未定义通知)

try 使用Reaction路由V5渲染多个布局

JavaScript数组首先按两个特定名称排序

如何用JAVASCRIPT更新背景位置值来实现CSS视差滚动?

如何在Xbox中撤销令牌