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

JavaScript日期转换函数失效:gen.02,2023转2023-01-02返回NaN-NaN-NaN

问题解决:意大利语日期格式转换失败返回NaN-NaN-NaN

问题原因

你的函数返回NaN-NaN-NaN,核心原因是原生JavaScript的Date构造函数无法识别意大利语的月份缩写(比如gen.是意大利语一月的缩写)。当执行new Date('gen. 02, 2023')时,得到的是无效日期对象,调用getMonth()、getDate()、getFullYear()这些方法都会返回NaN,最终拼接出错误结果。

解决方案

你需要先将意大利语的月份缩写映射为可识别的格式,再进行日期处理。以下是两种可靠的实现方式:

方式一:手动解析日期字符串(推荐,无需依赖Date构造函数)

直接拆分输入字符串,通过预设的月份映射表转换格式:

function formatDate(dateStr) {
    // 意大利语月份缩写 -> 两位数字的映射
    const itMonthMap = {
        'gen.': '01',
        'feb.': '02',
        'mar.': '03',
        'apr.': '04',
        'mag.': '05',
        'giu.': '06',
        'lug.': '07',
        'ago.': '08',
        'set.': '09',
        'ott.': '10',
        'nov.': '11',
        'dic.': '12'
    };

    // 拆分日期字符串,过滤空内容
    const [monthAbbr, day, year] = dateStr.split(/[\s,]+/).filter(Boolean);
    // 补全日期为两位,拼接成目标格式
    return `${year}-${itMonthMap[monthAbbr]}-${day.padStart(2, '0')}`;
}

方式二:转换为英文月份后用Date构造函数处理

先把意大利语月份替换成英文缩写,让Date能正常解析:

function formatDate(dateStr) {
    // 意大利语月份 -> 英文月份的映射
    const itToEnMonths = {
        'gen.': 'Jan',
        'feb.': 'Feb',
        'mar.': 'Mar',
        'apr.': 'Apr',
        'mag.': 'May',
        'giu.': 'Jun',
        'lug.': 'Jul',
        'ago.': 'Aug',
        'set.': 'Sep',
        'ott.': 'Oct',
        'nov.': 'Nov',
        'dic.': 'Dec'
    };

    // 替换意大利语月份为英文
    const enDateStr = dateStr.replace(/gen\.|feb\.|mar\.|apr\.|mag\.|giu\.|lug\.|ago\.|set\.|ott\.|nov\.|dic\./, match => itToEnMonths[match]);
    const d = new Date(enDateStr);

    // 校验日期有效性
    if (isNaN(d.getTime())) {
        throw new Error('输入的日期格式无效');
    }

    // 补全月份和日期为两位
    const month = String(d.getMonth() + 1).padStart(2, '0');
    const day = String(d.getDate()).padStart(2, '0');
    const year = d.getFullYear();

    return `${year}-${month}-${day}`;
}

测试调用:

console.log(formatDate('gen. 02, 2023')); // 输出:2023-01-02

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:53:28