【发布时间】:2020-05-08 18:09:33
【问题描述】:
所以我正在对一些 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))
});
}
这是负责更改日期的代码,现在它每秒将所有内容更改为当前日期(故意,出于验证目的)
【问题讨论】:
-
这能回答你的问题吗? How to run crontab job every week on Sunday
-
感谢重播。不,它没有。我知道如何使用 cron 在所需的日期/小时进行更新,但我不知道如何在
setDate()方法中更改日期和月份以保持年份和小时相同。我不知道setDate()的正文应该是什么样子 -
你在js中使用过Moment库吗?
-
@User123456 是的,我试过了。下面的解决方案解决了问题
标签: javascript node.js date mongoose