【发布时间】:2020-07-14 11:14:21
【问题描述】:
目前我正在第二天开始清除 mongodb 中的数据。 IE; 2020 年 7 月 15 日 00:00:00 根据时间从数据库中删除数据。在这里,我正在努力将适当的时间分配给 mongodb 的 expiresAt 属性。下面是我试图设置为 mongodb 的代码
const dateToString = new Date().toLocaleString("en-US", { timeZone: "Europe/Helsinki" });
const date = new Date(dateToString);
date.setDate(date.getDate());
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
date.setMilliseconds(0);
下面的代码,我用来设置ttl:
this.connector.update(COLLECTION_NAME,
{ _id: id },
{ $set: { amount, expiresAt: date } },
{ upsert: true });
如果使用上述代码,它将设置到期时间为 15-07-2020 00:00:00。要求是 mongodb 必须在第二天的芬兰时间 12:00 自动清除文档。但由于服务器以 UTC 时间运行, 这没有按预期工作。我没有明白我的意思。
有人可以帮我找到相同的解决方案吗?准备使用 moment 或 javascript Date 属性。
【问题讨论】:
-
@Joe 服务器在 UTC 时间运行,例如;如果我创建了文档,则必须在明天开始清除文档,时区是欧洲/赫尔辛基。因此,当我检查 12.00 时钟芬兰时间时,必须清除数据。
-
mongodb中的所有日期时间对象都存储为UTC。
-
@Joe 是的,你能更新一下我们可以实现时间的方式吗?因为如果我将 12:00:00 设置为 mongodb,在芬兰时间凌晨 3 点,数据将被清除。如果我错了,请纠正我。
-
是的,这是正确的,所以将过期时间设置为 UTC 晚上 9 点
-
@Joe 如果可能的话,你能不能更新一下代码,这可能会有很大的帮助。也会很乐意使用时刻。另外,如果我们有夏令时,这会是个问题吗?
标签: javascript node.js mongodb date