gpt4 book ai didi

javascript - 直接从用户输入之日起每年存储

转载 作者:行者123 更新时间:2023-11-28 04:17:50 25 4
gpt4 key购买 nike

您好,我需要直接存储从用户进入业务的日期起的每年,问题是每次我添加年份时都会在日期和月份之间插入。

var yearOnCompany = moment(user.fecha_ingreso_empresa, "YYYYMMDD").fromNow();
var dateStart = moment(user.fecha_ingreso_empresa).format("DD-MM-YYYY");
console.log(dateStart);
//03-12-2009
var f = parseInt(yearOnCompany);
var yearsOfWork = [];
for(var i = 1; i <= f; i++)
{
dateStart = moment(dateStart, "DD-MM-YYYY").add(1, 'years').calendar();
yearsOfWork.push(dateStart);
}
console.log(yearsOfWork);

结果:

0:"12/03/2010"
1:"03/12/2011"
2:"12/03/2012"
3:"03/12/2013"
4:"12/03/2014"
5:"03/12/2015"
6:"12/03/2016"
7:"03/12/2017"

最佳答案

这是一个微妙的错误!根据当前文档 https://momentjs.com/docs/#/displaying/ .calendar() 使用默认日期格式,可能使用环境的区域设置(如果未提供),因此这里看起来默认为 MM/DD/YYYY ,而不是所需的 DD/MM/YYYY。因此,在第一次迭代中,dateStart 被转换为 12/03/2010,并交换了月份和日期。然后在下一次迭代中,它会再次转换回 DD-MM-YYYY ,并交换日期和月份,然后再次传递给 .calendar() 时,日期和月份再次交换,再次给出正确的格式。

一个潜在的错误是您将 dateStart 从字符串更改为 moment 对象,因此我将重写代码,如下所示:

var dateStart = moment(user.fecha_ingreso_empresa).format("DD-MM-YYYY");
var f = parseInt(yearOnCompany);
var yearsOfWork = [];
for(var i = 1; i <= f; i++)
{
dateStart.add(1, 'years');
yearsOfWork.push(dateStart.format("DD-MM-YYYY"));
}
console.log(yearsOfWork);

关于javascript - 直接从用户输入之日起每年存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45686793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com