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

如何将不同字符串格式的日期转换为YYYYMMDD格式并生成标准化字符串列表

嘿,这个需求太常见了!不管你用什么语言,核心逻辑都是先把五花八门的日期字符串转成标准的日期对象,再输出成你要的YYYYMMDD格式。我用Python和JavaScript分别给你举例子,都是实际项目里用过的靠谱方案:


Python 实现方案

方法1:手动指定可能的日期格式(精准可控)

如果你的输入格式是已知的几种,这种方法最稳妥,不会出现解析歧义:

from datetime import datetime

def convert_to_yyyymmdd(date_list, date_formats):
    converted = []
    for date_str in date_list:
        # 挨个试格式,解析成功就转格式
        for fmt in date_formats:
            try:
                dt_obj = datetime.strptime(date_str, fmt)
                converted.append(dt_obj.strftime('%Y%m%d'))
                break
            except ValueError:
                continue
    return converted

# 测试一下
sample_dates = [
    "2023-10-05",
    "05/10/2023",
    "Oct 5, 2023",
    "2023.10.05",
    "2023年10月5日"
]
# 把你能想到的输入格式都列在这里
supported_formats = [
    '%Y-%m-%d',
    '%d/%m/%Y',
    '%b %d, %Y',
    '%Y.%m.%d',
    '%Y年%m月%d日'
]

print(convert_to_yyyymmdd(sample_dates, supported_formats))
# 输出:['20231005', '20231005', '20231005', '20231005', '20231005']

方法2:用第三方库自动识别格式(省事儿)

如果输入格式特别杂,不想一个个列出来,可以用python-dateutil库,它能自动识别绝大多数常见的日期格式:

from dateutil.parser import parse

def quick_convert_dates(date_list):
    return [parse(date_str).strftime('%Y%m%d') for date_str in date_list]

# 同样的sample_dates,直接用就行
print(quick_convert_dates(sample_dates))

注意:需要先装这个库,执行pip install python-dateutil就行。


JavaScript 实现方案

JS原生的Date对象能解析不少格式,但对一些小众格式可能不太友好,这里给两种思路:

原生JS实现(适合常见格式)

function convertDates(dateArray) {
    return dateArray.map(dateStr => {
        const date = new Date(dateStr);
        // 补零处理,确保月份和日期是两位
        const year = date.getFullYear();
        const month = String(date.getMonth() + 1).padStart(2, '0');
        const day = String(date.getDate()).padStart(2, '0');
        return `${year}${month}${day}`;
    });
}

// 测试
const testDates = ["2023-10-05", "Oct 5, 2023", "05/10/2023"];
console.log(convertDates(testDates));

用第三方库(比如Moment.js,更可靠)

如果遇到原生解析不了的格式,Moment.js几乎能搞定所有情况:

// 先引入Moment.js,浏览器里可以用CDN,Node.js需要npm install moment
const moment = require('moment');

function convertWithMoment(dateArray) {
    return dateArray.map(dateStr => moment(dateStr).format('YYYYMMDD'));
}

console.log(convertWithMoment(testDates));

关键提醒
  • 如果你用手动指定格式的方法,一定要把所有可能的输入格式都列全,不然会有漏网之鱼
  • 用自动识别的库虽然省事儿,但要注意解析歧义,比如05/10/2023到底是5月10日还是10月5日?这种情况手动指定格式更精准
  • 你说输入都是有效日期,所以不用额外处理解析失败的情况,要是有无效日期,记得加错误捕获逻辑哦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:12:37