【问题标题】:How do you get a date to correspond to the week number of a year您如何获得与一年中的周数相对应的日期
【发布时间】:2021-08-01 08:13:04
【问题描述】:

我对 javascript 很陌生,我正在创建一个仪表板。我想获得每周的订单数量,这是我能够做到的。现在,我得到了与一年中的一周相对应的数字,但是,我想获得与那一周相对应的日期(星期一)。我已经包括了我在下面的内容。我将不胜感激有关如何执行此操作的任何帮助或指导。谢谢!

 const weeklyOrders = await Order.aggregate([
      {
        $group: {
          _id: { $dateToString: { format: '%U', date: '$createdAt' } },
          orders: { $sum: 1 },
        },
      },
      { $sort: { _id: 1 } },
    ]);

编辑:

 const weeklyOrders = await Order.aggregate([
      {

        $group: {
          _id:{ $dateFromParts: {
            isoWeekYear: {$year: '$createdAt' },
            isoWeek: { $isoWeek: '$createdAt' },
            isoDayOfWeek: 1
          },
        },
         
            orders: { $sum: 1 },
          },
        },
        { $sort: { _id: 1 } },
      ]);

工作,但日期是 ISO 日期格式。我试图在下面的代码中解决这个问题,但没有奏效。

 const weeklyOrders = await Order.aggregate([
      {
        $group: {
          _id:{ date: {
            $dateToString: { format: '%m-%d-%Y' },
          },
          },
            orders: { $sum: 1 },
          },
        },
        { $sort: { _id: 1 } },

      {
        $addFields:{
          date: {
            $dateFromParts: {
              isoWeekYear: {$year: '$createdAt' },
              isoWeek: { $isoWeek: '$createdAt' },
              isoDayOfWeek: 1
          }
        }
      }
    },
      ]);

【问题讨论】:

    标签: javascript reactjs mongodb mongodb-query


    【解决方案1】:

    您可以执行以下操作:

    1. 使用$year$isoWeek 获取特定日期的年份和周数
    2. 使用$dateFromParts"isoDayOfWeek": 1 转换回你想要的星期一

    这里是Mongo playground 供您参考。

    【讨论】:

    • 好的,谢谢!有没有办法以 MM-DD-YYYY 格式而不是 ISO 日期格式来格式化日期?我尝试在问题的已编辑部分执行此操作,但没有成功。
    • 您忘记提供 date 值。尝试类似{$dateToString: {date: $createdAt",format: "%m-%d-%Y"}
    猜你喜欢
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    相关资源
    最近更新 更多