You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按日期分组JSON订单数据并汇总每日销售额的实现需求

解决方案:按日期汇总订单销售额并生成全月统计JSON

实现步骤与代码

要完成需求,需依次处理数据解析、日期分组汇总、全月列表生成和格式输出四个核心环节,以下是完整可运行的Python代码:

import json
from datetime import datetime
import calendar

# 原始订单JSON数据(替换为你的实际数据)
jsondump = '''{"orders":[{"total_price":"100.10","updated_at":"2022-12-29T12:10:39+01:00"},{"total_price":"50.20","updated_at":"2022-12-29T12:05:02+01:00"},{"total_price":"53.20","updated_at":"2022-12-29T12:00:39+01:00"},{"total_price":"50.00","updated_at":"2022-12-28T11:54:29+01:00"},{"total_price":"30.00","updated_at":"2022-12-27T13:35:03+01:00"}]}'''

# 1. 解析JSON并提取订单数据
order_data = json.loads(jsondump)['orders']

# 2. 按日期(日)分组汇总销售额
daily_sales = {}
for order in order_data:
    # 解析带时区的日期字符串,提取当月日期
    dt = datetime.fromisoformat(order['updated_at'])
    day = dt.day
    # 转换价格为浮点数进行累加
    price = float(order['total_price'])
    daily_sales[day] = daily_sales.get(day, 0.0) + price

# 3. 获取订单所属年月及该月总天数
first_order_dt = datetime.fromisoformat(order_data[0]['updated_at'])
year, month = first_order_dt.year, first_order_dt.month
_, total_days = calendar.monthrange(year, month)

# 4. 生成全月日期统计列表
day_list = []
for day in range(1, total_days + 1):
    sales = daily_sales.get(day, 0.0)
    day_list.append({
        "total_day_sales": f"{sales:.2f}",
        "day_in_themonth": str(day)
    })

# 5. 转换为目标JSON格式
result = {"day": day_list}
print(json.dumps(result, indent=2))

关键细节说明

  • 可靠日期解析:用datetime.fromisoformat()处理带时区的日期字符串,比直接截取字符串更稳定,避免因格式微调出错。
  • 分组累加逻辑:通过字典daily_sales存储每日销售额,键为日期整数,值为累计金额,遍历订单时完成同日期金额合并。
  • 全月日期生成:借助calendar.monthrange()获取指定年月的总天数,循环生成1到总天数的所有日期,无数据时销售额设为0.00。
  • 格式匹配:将最终金额格式化为两位小数的字符串,完全匹配目标JSON的格式要求。

输出结果

运行代码后会输出符合需求的JSON:

{
  "day": [
    {"total_day_sales": "0.00", "day_in_themonth": "1"},
    {"total_day_sales": "0.00", "day_in_themonth": "2"},
    ...
    {"total_day_sales": "30.00", "day_in_themonth": "27"},
    {"total_day_sales": "50.00", "day_in_themonth": "28"},
    {"total_day_sales": "203.50", "day_in_themonth": "29"},
    {"total_day_sales": "0.00", "day_in_themonth": "30"},
    {"total_day_sales": "0.00", "day_in_themonth": "31"}
  ]
}

内容的提问来源于stack exchange,提问作者Roman_Py

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:25:32