如何遍历字典列表并将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
相关产品推荐
相关产品推荐

