我正在对日期进行一些mongo聚合,遇到了一个有趣的问题,即从mongo返回的$week与从Luxon返回的weekNumber不同。
在下面的代码片段中,mongo的$week返回47,而Luxon的weekNumber返回48。
有没有一种方法可以使两者正常化,从而使给定日期返回相同的$week/weekNumber?
我可以从Luxon返回的值中减去一,但我想了解为什么响应不同,以确定是否有更合适/更优雅的方法来解决这个问题。
MONGO:
[{
'$match': {
'date': {
'$eq': datetime(2020, 11, 23, 0, 0, 0, tzinfo=timezone.utc)
}
}
}, {
'$project': {
'w': {
'$week': '$date'
}
}
}]
LUXON:
import { DateTime } from "luxon";
var week = DateTime.fromJSDate(new Date(2020,10,23)).weekNumber;
console.log(week);
查看文档:
周编号:
周日历:有关ISO周日历属性,请参阅weekYear、weekNumber和工作日访问者。
$week:
以0到53之间的数字形式返回日期的一年中的星期。
每周从星期日开始,第1周从一年中的第一个星期日开始。一年中第一个星期日之前的日子在第0周。此行为与strftime标准库函数的"%U"运算符相同。
如果你想根据ISO-8601获得周数,请使用$isoWeek((:
返回ISO 8601格式的周数,范围从1到53。周数从1开始,包含一年中第一个星期四的一周(星期一到星期日(。
看起来在Luxon中没有类似于MongoDB的$week