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

为什么字典中的datetime值写入csv与打印输出的格式不一致?

问题根因

你遇到的大概率不是写入逻辑的问题,而是Excel打开CSV文件时的自动格式化行为导致的:

  • 你用print输出的日期都是YYYY-MM-DD格式,说明代码里的日期值本身是对的
  • Excel会自动识别文件中看起来是日期的内容,前几行可能特征不明显没有触发识别,后续触发后就自动转成了你系统默认的MM/DD/YYYY日期格式
  • 验证方法:用记事本、VS Code等纯文本编辑器打开你输出的CSV文件,就能看到所有日期实际都是YYYY-MM-DD格式

修复方案

分两种场景处理:

  1. 只需要文件本身内容正确,用文本工具读取没问题
    你只需要确保写入时显式把datetime对象转成ISO格式字符串,不要依赖隐式类型转换,同时修正原代码的语法错误、添加上下文管理器避免文件资源泄漏,修正后代码如下:

    import sys
    from datetime import datetime
    
    with open(sys.argv[2], 'w', encoding='utf-8') as file:
        for key in date_dict:
            date_val = date_dict[key]
            # 强制显式转成ISO格式字符串,避免隐式转换异常
            if isinstance(date_val, datetime):
                date_str = date_val.strftime('%Y-%m-%d')
            else:
                date_str = str(date_val)
            print(date_str)
            file.write(f"{date_str}\n")
    
  2. 需要用Excel打开也显示为YYYY-MM-DD格式
    写入时给日期字段添加特殊标识,让Excel识别为纯文本不自动转格式,修改写文件的代码行即可:

    file.write(f'="{date_str}"\n')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:42:02