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

如何使用Moment.js将日期格式从mm-dd-yyyy转为yyyy-dd-mm?

问题解决方案

一、Datepicker格式配置无效问题

1. 先明确控件类型与依赖

  • 你当前用的是HTML5原生<input type="date">,这个控件的显示格式由浏览器系统区域设置决定,无法通过JS强制修改为yyyy-dd-mm,且它的value始终返回ISO标准格式yyyy-mm-dd。如果必须自定义显示格式,建议替换为jQuery UI Datepicker或bootstrap-datepicker这类第三方控件。
  • 若使用第三方Datepicker(比如jQuery UI),你当前的代码缺少核心依赖——必须引入对应控件的JS和CSS文件,仅引入jQuery是不够的。

2. 修正第三方Datepicker的格式配置

如果用的是jQuery UI Datepicker,格式符号规则和你写的不同,正确配置如下:

$('.datepicker').datepicker({
    dateFormat: 'yy-dd-mm', // jQuery UI用yy代表4位年份,而非yyyy
    altField: '#birth-date', // 可选:将格式化后的日期同步到输入框
    altFormat: 'yy-dd-mm'
});

如果用的是bootstrap-datepicker,格式符号支持yyyy-dd-mm,但同样要确保引入了bootstrap-datepicker的JS和CSS文件,配置代码可保留你的写法,但需补充依赖。


二、Moment.js计算年龄无效问题

1. 先补全依赖

在HTML中添加Moment.js的引入脚本:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js"></script>

2. 修正格式解析逻辑

Moment.js的格式字符串区分大小写,yyyy代表周年份,正确的4位年份格式是YYYY,同时建议开启严格解析并兼容ISO格式输入(比如原生datepicker返回的yyyy-mm-dd),修改后的函数如下:

const getdate = (db) => {
    // 兼容两种格式:自定义的yyyy-dd-mm和原生的yyyy-mm-dd,开启严格解析
    const date = moment(db, ['YYYY-DD-MM', 'YYYY-MM-DD'], true);
    // 验证日期有效性,避免错误计算
    if (!date.isValid()) {
        return '无效日期'; // 或返回0等默认值
    }
    return moment().diff(date, 'years');
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:26:16