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

如何为日期字段补前导零并转换为YYYY-MM-DD格式?

如何将JSON中的短格式日期转换为YYYY-MM-DD格式?

我的JSON文件中有部分日期格式如下:

2020-12-11
2020-5-1
2020-3-21

希望将它们转换为YYYY-MM-DD格式,为单数字的月份和日期添加前导零,期望输出:

2020-12-11
2020-05-01
2020-03-21

以下是几种实用的实现方式:

方法1:Python脚本处理

借助datetime模块解析日期后重新格式化,同时遍历JSON文件修改对应字段:

import json
from datetime import datetime

def fix_date(date_str):
    # 解析原始日期字符串
    dt = datetime.strptime(date_str, "%Y-%m-%d")
    # 格式化为带前导零的标准格式
    return dt.strftime("%Y-%m-%d")

# 读取目标JSON文件
with open("source.json", "r", encoding="utf-8") as f:
    json_data = json.load(f)

# 假设日期存储在名为"date"的字段中,根据实际结构调整遍历逻辑
for entry in json_data:
    if "date" in entry:
        entry["date"] = fix_date(entry["date"])

# 写入修正后的JSON文件
with open("fixed.json", "w", encoding="utf-8") as f:
    json.dump(json_data, f, indent=2, ensure_ascii=False)

方法2:Node.js脚本处理

用正则表达式直接替换字符串,无需解析日期,适合快速批量修改:

const fs = require('fs');

// 读取文件内容
const rawContent = fs.readFileSync('source.json', 'utf8');

// 正则匹配并补全前导零
const fixedContent = rawContent
    // 处理月和日都是单数字的情况
    .replace(/(\d{4})-(\d{1})-(\d{1})/g, '$1-0$2-0$3')
    // 处理月单数字、日两位的情况
    .replace(/(\d{4})-(\d{1})-(\d{2})/g, '$1-0$2-$3')
    // 处理月两位、日单数字的情况
    .replace(/(\d{4})-(\d{2})-(\d{1})/g, '$1-$2-0$3');

// 写入修正后的文件
fs.writeFileSync('fixed.json', fixedContent, 'utf8');

方法3:命令行sed工具(Linux/macOS)

通过sed命令直接在终端批量替换:

sed -E 's/([0-9]{4})-([0-9])-([0-9])/\1-0\2-0\3/g; s/([0-9]{4})-([0-9])-([0-9]{2})/\1-0\2-\3/g; s/([0-9]{4})-([0-9]{2})-([0-9])/\1-\2-0\3/g' source.json > fixed.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:40:28