0

我正在对日期进行一些 mongo 聚合并遇到了一个有趣的问题,即从 mongo 返回的 $week 与从 Luxon 返回的 weekNumber 不同。

在下面的代码片段中,来自 mongo 的 $week 返回 47,而来自 Luxon 的 weekNumber 返回 48。

有没有办法将两者标准化,以便给定日期返回相同的 $week/weekNumber?

我可以从 Luxon 返回的值中减去一个,但我想了解为什么响应不同,以确定是否有更合适/更优雅的方法来解决这个问题。

蒙哥

[{
    '$match': {
        'date': {
            '$eq': datetime(2020, 11, 23, 0, 0, 0, tzinfo=timezone.utc)
          }
        }
    }, {
    '$project': {
        'w': {
            '$week': '$date'
        }
    }
}]

卢克森

import { DateTime } from "luxon";

var week = DateTime.fromJSDate(new Date(2020,10,23)).weekNumber;
console.log(week);
4

1 回答 1

0

看看文档:

周数:

周历:有关 ISO 周历属性,请参阅 weekYear、weekNumber 和 weekday 访问器。

$周:

将日期作为 0 到 53 之间的数字返回一年中的第几周。

周从星期日开始,第 1 周从一年中的第一个星期日开始。一年中第一个星期日之前的日子在第 0 周。此行为与 strftime 标准库函数的“%U”运算符相同。

如果您想根据 ISO-8601 获取周数,请使用$isoWeek():

返回 ISO 8601 格式的周数,范围从 1 到 53。周数从 1 开始,其中包含一年的第一个星期四的周(周一到周日)。

看起来在 Luxon 中没有相当于 MongoDB 的$week

于 2020-11-25T13:08:12.647 回答