Moment js 添加日期和格式失败
Moment js add date and format fails
我想将天数添加到特定日期并格式化输出。所以我有以下内容:
addDays(date){
return moment(date).add(365, 'd').format("DD/MM/YYYY");
}
我已经用下面的方法测试了上面的内容
console.log(addDays("24/05/2021")) //this returns invalid date
console.log(addDays("05/06/2021")) //returns 06/05/2022
第一个日期 return 是 invalid date
,第二个我预计 return 05/06/2022
但 return 是错误的日期.
我缺少什么才能让它工作。我的日期格式为 dd/mm/yyyy
是吗?如果你真的想增加一年,那么 .add(1, 'year')
,而不是 365 天。
它失败了,因为 momentjs
无法解析那个日期。
您必须指定传递的格式:
moment(inputDate, 'DD/MM/YYYY')
MomentJS String + Format documentation
请参阅下面的示例,这将是预期的输出:
function addDays(inputDate){
return moment(inputDate, 'DD/MM/YYYY').add(365, 'd').format("DD/MM/YYYY");
}
console.log(addDays("24/05/2021"));
console.log(addDays("05/06/2021"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
24/05/2022
05/06/2022
也就是说,我仍然建议使用 moment().add(1, 'year')
:
function addDays(inputDate){
return moment(inputDate, 'DD/MM/YYYY').add(1, 'year').format("DD/MM/YYYY");
}
function addDays(inputDate){
return moment(inputDate, 'DD/MM/YYYY').add(1, 'year').format("DD/MM/YYYY");
}
console.log(addDays("24/05/2021"));
console.log(addDays("05/06/2021"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
您可以通过两种方式做到这一点:
使用 day
和 year
let addNYears = function(years = 1, date) {
return moment(date, 'DD/MM/YYYY').add(years, 'year').format("DD/MM/YYYY");
}
let addNDays = function(days = 1, date) {
return moment(date, 'DD/MM/YYYY').add(days, 'day').format("DD/MM/YYYY");
}
console.log(addNYears(1, new Date())); // +1 year
// this is not the best way as each 4 years we have a leap year.
console.log(addNDays(365, new Date())); // +365 days
console.log(addNDays(5, new Date())); // +5 days
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" integrity="sha512-qTXRIMyZIFb8iQcfjXWCO8+M5Tbc38Qi5WzdPOYZHIlZpzBHG3L3by84BBBOiRGiEb7KKtAOAs5qYdUiZiQNNQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
我想将天数添加到特定日期并格式化输出。所以我有以下内容:
addDays(date){
return moment(date).add(365, 'd').format("DD/MM/YYYY");
}
我已经用下面的方法测试了上面的内容
console.log(addDays("24/05/2021")) //this returns invalid date
console.log(addDays("05/06/2021")) //returns 06/05/2022
第一个日期 return 是 invalid date
,第二个我预计 return 05/06/2022
但 return 是错误的日期.
我缺少什么才能让它工作。我的日期格式为 dd/mm/yyyy
是吗?如果你真的想增加一年,那么 .add(1, 'year')
,而不是 365 天。
它失败了,因为 momentjs
无法解析那个日期。
您必须指定传递的格式:
moment(inputDate, 'DD/MM/YYYY')
MomentJS String + Format documentation
请参阅下面的示例,这将是预期的输出:
function addDays(inputDate){
return moment(inputDate, 'DD/MM/YYYY').add(365, 'd').format("DD/MM/YYYY");
}
console.log(addDays("24/05/2021"));
console.log(addDays("05/06/2021"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
24/05/2022
05/06/2022
也就是说,我仍然建议使用 moment().add(1, 'year')
:
function addDays(inputDate){
return moment(inputDate, 'DD/MM/YYYY').add(1, 'year').format("DD/MM/YYYY");
}
function addDays(inputDate){
return moment(inputDate, 'DD/MM/YYYY').add(1, 'year').format("DD/MM/YYYY");
}
console.log(addDays("24/05/2021"));
console.log(addDays("05/06/2021"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
您可以通过两种方式做到这一点:
使用 day
和 year
let addNYears = function(years = 1, date) {
return moment(date, 'DD/MM/YYYY').add(years, 'year').format("DD/MM/YYYY");
}
let addNDays = function(days = 1, date) {
return moment(date, 'DD/MM/YYYY').add(days, 'day').format("DD/MM/YYYY");
}
console.log(addNYears(1, new Date())); // +1 year
// this is not the best way as each 4 years we have a leap year.
console.log(addNDays(365, new Date())); // +365 days
console.log(addNDays(5, new Date())); // +5 days
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" integrity="sha512-qTXRIMyZIFb8iQcfjXWCO8+M5Tbc38Qi5WzdPOYZHIlZpzBHG3L3by84BBBOiRGiEb7KKtAOAs5qYdUiZiQNNQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>