簡體   English   中英

如何在每個星期日更新日期?

[英]How can I update date every Sunday?

所以我正在使用一些 JavaScript 日期進行故障排除。 我正在使用 NodeJS Mongoose 和 React。 我想更新數據庫中的所有日期,但我想每個周末都這樣做並保持時間,根本不要更改它們。

假設我有 2020 年 1 月 22 日這樣的日子,在周末期間,日期將更新為 1 月 29 日,然后是 2 月 5 日。 數據庫中的所有內容都像ISODate("2020-01-16T16:27:15.003Z")一樣保存,我有一個代碼可以隨時更新這些日期。 我無法弄清楚setDate()的主體應該如何自動更改月份和日期,同時每次都保持相同的時間 - 所以周末的 22/01/2020 下午 4:00 將更改為 29/01/2020 4:00 PM。

我已經嘗試使用momentjs來處理日期,但它不適用於我的數據庫。

cron.schedule("* * * * * *",async function() {
                const courses = await Course.find({});
                courses.forEach(course => {
                    const newDate = () => {
                        let date = new Date();
                        return date.toISOString();
                    };
                    Course.updateMany({
                        "nextClasses": course.nextClasses === course.startingDate ? course.startingDate :
                            course.nextClasses
                    },{$set: {"nextClasses": newDate()}},(err) => console.log(err))
                });
            }

這是負責更改日期的代碼,現在它每秒將所有內容更改為當前日期(有意為驗證目的)

這將使每個星期日的所有日期增加 7 天。

const addDays = (date, days) => {
    const result = new Date(date);
    result.setDate(result.getDate() + days);
    return result;
};

cron.schedule("0 0 * * 0", async function() {
    const courses = await Course.find({});
    courses.forEach(async (course) => {
        await course.update(
            {
                $set: {
                    nextClasses: addDays(course.nextClasses, 7)
                }
            },
            (err) => console.log(err)
        );
    });
});

替代方法

cron.schedule("0 0 * * 0", async function() {
    const courses = await Course.find({});
    courses.forEach(async (course) => {
        course.nextClasses.setDate(course.nextClasses.getDate() + 7);
        course.markModified("nextClasses"); /* Mongoose does not track changes made by built-in Date methods */
        await course.save((err) => console.log(err));
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM