javascript - 如何每周日更新日期?

标签 javascript node.js date mongoose

所以我正在对一些 JavaScript 日期进行故障排除。我正在使用 NodeJS Mongoose 和 React。我想更新数据库中的所有日期,但我想每个周末都这样做并保留时间,根本不要更改它们。

假设我有一个日子,比如 2020 年 1 月 22 日,周末日期会自动更新为 1 月 29 日,然后是 2 月 5 日。数据库中的所有内容都像 ISODate("2020-01-16T16:27:15.003Z") 一样保存,我有一个代码可以随时更新这些日期。我无法弄清楚 setDate() 的主体应该如何自动更改月份和日期,同时每次保持相同的时间 - 因此周末期间的 22/01/2020 下午 4:00 将更改为 2020 年 1 月 29 日下午 4:00。

我已经尝试使用 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));
    });
});

关于javascript - 如何每周日更新日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59862150/

相关文章:

javascript - 使用 Messenger SDK 发送文件数据

javascript - knockout 多个数组绑定(bind)到行跨度表

date - 如何在 Hive 中转换日期格式 'DDMONYYYY:HH....' 样式日期

c++ - 对 boost::gregorian::greg_month::as_short_string() const 的 undefined reference

javascript - HTML5 拖放功能 - 删除掉落的项目

javascript 删除 li 而不删除 ul?

javascript - 在 fs.stat 之后获取 'undefined'

node.js - 文件流问题,逐行读取。尽管文件存在,但仍抛出 ENONET

node.js - 使用nodejs HFC提交调用交易后如何获取交易uuid

java - 替代已弃用的 java date.sethours