首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取从今天起在节点js中更新服务的日期。

获取从今天起在节点js中更新服务的日期。
EN

Stack Overflow用户
提问于 2022-10-17 01:57:09
回答 1查看 36关注 0票数 1

我正在构建一个SaaS应用程序,其中产品最后服务日期和下一个服务模式(每周、每月、季度)存储在数据库中,因此我需要从当前日期开始的一年的服务日期,以json格式作为nodejs中的响应。

下面的json格式是存储在数据库中的日期结构,

代码语言:javascript
运行
复制
[{
"ItemName":"Fan",
"LastService":"01-03-2022",
"ServiceMode":"Monthly",
},
{
"ItemName":"AC",
"LastService":"01-04-2022",
"ServiceMode":"Quarterly",
}]

我需要来自节点的输出摘要响应采用以下json格式,当我将当前月份作为请求有效负载发送时。

代码语言:javascript
运行
复制
[{
"ItemName":"Fan",
"ServiceMode":"Monthly",
"NextServices":["01-10-2022","01-11-2022","01-12-2022","01-01-2023","01-02-2023","01-03-2023","01-04-2023",
"01-05-2023","01-06-2023","01-06-2023","01-07-2023","01-08-2023","01-09-2023",],
},
{
"ItemName":"AC",
"ServiceMode":"Quarterly",
"NextServices":["01-07-2022","01-10-2022","01-01-2023","01-04-2023"],
}]

技术Node.js,Mongo,快递

EN

回答 1

Stack Overflow用户

发布于 2022-10-17 05:33:22

代码语言:javascript
运行
复制
let data = [
    {
        ItemName: "Fan",
        LastService: "01-03-2022",
        ServiceMode: "Monthly"
    },
    {
        ItemName: "AC",
        LastService: "03-04-2022",
        ServiceMode: "Quarterly"
    }
];

let months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']


for (let i = 0; i < data.length; i++) {
    let checkMonth = (new Date(data[i].LastService)).getMonth();
    // console.log({checkMonth})

    if (data[i].ServiceMode === "Monthly") {
        let NextServices = [];
        let curYearMonths = months.slice(checkMonth + 1);
        let nextYearmonths = months.slice(0, checkMonth + 1);
        curYearMonths.forEach(item => {
            let validMonth = ('' + (months.indexOf(item) + 1)).length > 1 ? months.indexOf(item) + 1 : '0' + (months.indexOf(item) + 1);
            NextServices.push(validMonth + data[i].LastService.slice(2));
        });
        nextYearmonths.forEach(item => {
            let lastIndexLength = data[i].LastService.length;
            let validMonth = ('' + (months.indexOf(item) + 1)).length > 1 ? months.indexOf(item) + 1 : '0' + (months.indexOf(item) + 1);
            let validYear = data[i].LastService.slice(0, lastIndexLength - 1) + (parseInt(data[i].LastService.slice(-1)) + 1);
            console.log(validYear)
            NextServices.push(validMonth + validYear.slice(2));
        })
        data[i].NextServices = NextServices;
    } else {
        let NextServices = [];
        let curYearMonths = months.slice(checkMonth + 1).filter((item, index) => index % 3 == 0);
        curYearMonths.forEach(item => {
            let validMonth = ('' + (months.indexOf(item) + 1)).length > 1 ? months.indexOf(item) + 1 : '0' + (months.indexOf(item) + 1);
            NextServices.push(validMonth + data[i].LastService.slice(2));
        });
        let nextYearmonths = [...months.slice(checkMonth + 1), ...months.slice(0, checkMonth + 1)].filter((item, index) => index % 3 == 0);
        nextYearmonths = nextYearmonths.filter(item => !curYearMonths.includes(item));
        nextYearmonths.forEach(item => {
            let lastIndexLength = data[i].LastService.length;
            let validMonth = ('' + (months.indexOf(item) + 1)).length > 1 ? months.indexOf(item) + 1 : '0' + (months.indexOf(item) + 1);
            let validYear = data[i].LastService.slice(0, lastIndexLength - 1) + (parseInt(data[i].LastService.slice(-1)) + 1);
            NextServices.push(validMonth + validYear.slice(2));
        })
        data[i].NextServices = NextServices;
    }
};

console.log(data);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74091917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档