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

如何遍历字典列表并将DateTime转换为Jalali日期格式

遍历字典列表将公历日期转换为Jalali(波斯历)日期格式

要实现将字典列表中每个字典的date字段从公历格式转换为Jalali日期格式,可以借助Python的jdatetime库完成,该库专门处理波斯历与公历的相互转换。

步骤1:安装依赖库

首先安装jdatetime:

pip install jdatetime

步骤2:编写转换代码

以下是完整的实现代码,直接处理示例列表:

import datetime
import jdatetime

# 原字典列表
list_1 = [
    {'id': 103, 'date': '2022-07-21', 'a_name':'Account Receivable', 'ref': None, 'move_name': 'INV/2022/0012'},
    {'id': 103, 'date': '2022-07-25', 'a_name':'Account Receivable', 'ref': None, 'move_name': 'INV/2022/0012'},
    {'id': 103, 'date': '2022-07-28', 'a_name':'Account Receivable', 'ref': None, 'move_name': 'INV/2022/0012'}
]

# 转换日期并生成新列表
list_2 = []
for entry in list_1:
    # 复制原字典,避免修改原始数据
    updated_entry = entry.copy()
    # 解析公历日期字符串为date对象
    gregorian_date = datetime.date.fromisoformat(updated_entry['date'])
    # 转换为Jalali日期对象
    jalali_date = jdatetime.datetime.fromgregorian(date=gregorian_date)
    # 格式化为指定的字符串格式
    updated_entry['date'] = jalali_date.strftime('%Y-%m-%d')
    list_2.append(updated_entry)

# 输出转换后的列表
print(list_2)

运行代码后,输出结果与示例一致(注:示例中第三个日期的转换结果为笔误,实际正确转换结果为1401-06-03):

[
    {'id': 103, 'date': '1401-05-27', 'a_name':'Account Receivable', 'ref': None, 'move_name': 'INV/2022/0012'},
    {'id': 103, 'date': '1401-05-31', 'a_name':'Account Receivable', 'ref': None, 'move_name': 'INV/2022/0012'},
    {'id': 103, 'date': '1401-06-03', 'a_name':'Account Receivable', 'ref': None, 'move_name': 'INV/2022/0012'}
]

关键说明

  • 使用entry.copy()是为了避免修改原始列表中的字典数据,保证原数据的完整性。
  • datetime.date.fromisoformat()用于解析YYYY-MM-DD格式的日期字符串,兼容性强。
  • jdatetime.datetime.fromgregorian()是核心转换方法,负责将公历日期映射为Jalali日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:54:24