所以我正在对一些 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/