Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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 为什么我能';在我的Angular应用程序中使用MomentJS不会为日期添加年份吗?_Javascript_Angular_Momentjs_Angular Moment - Fatal编程技术网

Javascript 为什么我能';在我的Angular应用程序中使用MomentJS不会为日期添加年份吗?

Javascript 为什么我能';在我的Angular应用程序中使用MomentJS不会为日期添加年份吗?,javascript,angular,momentjs,angular-moment,Javascript,Angular,Momentjs,Angular Moment,我正在开发一个角度应用程序,试图使用momentJS为日期添加特定的年数,但它似乎不起作用 这是我的代码: changeGuaranteeEndDate(guaranteeDuration) { console.log("changeGuaranteeEndDate() START"); console.log("GUARANTEE START DATE: " + this.newAssetForm.value.guarantee_star

我正在开发一个角度应用程序,试图使用momentJS为日期添加特定的年数,但它似乎不起作用

这是我的代码:

changeGuaranteeEndDate(guaranteeDuration) {
    console.log("changeGuaranteeEndDate() START");
    console.log("GUARANTEE START DATE: " + this.newAssetForm.value.guarantee_start_date);
    console.log("GUARANTEE DURATION: " + this.newAssetForm.value.guarantee_duration);
    console.log("EVENT VAL: " + guaranteeDuration);

    this.newAssetForm.value.guarantee_duration = guaranteeDuration;
    console.log("GUARANTEE DURATION: " + this.newAssetForm.value.guarantee_duration);

    let myMoment: moment.Moment = moment(this.newAssetForm.value.guarantee_start_date);
    console.log("myMoment: ", myMoment);

    let myMoment2 = myMoment;
    myMoment2.add(3, 'y')

    console.log("myMoment2: ", myMoment2);
}
因此,基本上我正在创建myMoment对象,从定义到this.newAssetForm.value.warrance\u start\u date的日期开始

然后,我尝试创建一个新的myMoment2对象,从myMoment开始,并为该对象添加3年。最后我把它打印出来

问题在于,在Chrome控制台中,我获得以下输出:

myMoment:  
Moment {_isAMomentObject: true, _i: Fri Jan 29 2021 13:04:29 GMT+0100 (Ora standard dell’Europa centrale), _isUTC: false, _pf: {…}, _locale: Locale, …}
_d: Mon Jan 29 2024 13:04:29 GMT+0100 (Ora standard dell’Europa centrale) {}
_i: Fri Jan 29 2021 13:04:29 GMT+0100 (Ora standard dell’Europa centrale) {}
_isAMomentObject: true
_isUTC: false
_isValid: true
_locale: Locale {_calendar: {…}, _longDateFormat: {…}, _invalidDate: "Invalid date", _dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: ƒ, …}
_pf: {empty: false, unusedTokens: Array(0), unusedInput: Array(0), overflow: -2, charsLeftOver: 0, …}
__proto__: Object

myMoment2:  
Moment {_isAMomentObject: true, _i: Fri Jan 29 2021 13:04:29 GMT+0100 (Ora standard dell’Europa centrale), _isUTC: false, _pf: {…}, _locale: Locale, …}
_d: Mon Jan 29 2024 13:04:29 GMT+0100 (Ora standard dell’Europa centrale) {}
_i: Fri Jan 29 2021 13:04:29 GMT+0100 (Ora standard dell’Europa centrale) {}
_isAMomentObject: true
_isUTC: false
_isValid: true
_locale: Locale {_calendar: {…}, _longDateFormat: {…}, _invalidDate: "Invalid date", _dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal: ƒ, …}
_pf: {empty: false, unusedTokens: Array(0), unusedInput: Array(0), overflow: -2, charsLeftOver: 0, …}
__proto__: Object
问题在于,正如您在之前的输出中所看到的,年份似乎没有添加到原始的myMoment对象中

我的代码有什么问题?我错过了什么?如何正确地将年份添加到原始myMoment对象中?

好的,您需要
format()
来显示moment对象的值。基本上,问题是传递给它的初始值。阅读更多关于它的文章。因此,您的上一个控制台日志应该如下所示:

console.log("myMoment2: ", myMoment2.format());

它对我有用。。。。您可以单击下面的
运行代码片段
对其进行测试

您可以尝试使用与我的示例相同的加载库:src moment.min.js

功能更改担保终止(担保终止){
log(“changeGuaranteendDate()START”);
log(“保证开始日期:+this.newAssetForm.value.guaranty\u START\u DATE”);
log(“保证期限:+this.newAssetForm.value.guarange\u DURATION”);
console.log(“事件值:+guaranteduration”);
this.newAssetForm.value.guarange\u duration=担保教育;
log(“保证期限:+this.newAssetForm.value.guarange\u DURATION”);
让myMoment=moment(this.newAssetForm.value.Guarrance\u start\u date);
log(“myMoment:,myMoment”);
设myMoment2=myMoment;
myMoment2.加上(3,‘y’)
控制台日志(“myMoment2:”,myMoment2);
}
//这只是为了测试功能。。。和嘲弄对象
ChangeGuaranteenDate.apply({
新资产形式:{
价值:{
担保开始日期:新日期(),
担保期限:未定义
}
}
})

您是否尝试过
控制台.log(this.newAssetForm.value.guarange\u start\u date)
?它返回什么?我刚刚用几乎完全相同的逻辑创建了一个代码笔,它在那里工作得非常完美:我相信代码工作得很好。唯一的问题是您正在创建力矩对象的shalow副本。随着年份的增加,这两个变量都发生了变化。你可以做
让myMoment2=myMoment.clone()
然后进行添加。您将看到差异。请通过将用户重定向到其他问题的答案来避免回答问题。你可以在评论中这样做。