You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

UI DatePicker无法正确显示公元100年前日期的问题求助

解决jQuery UI Datepicker解析早于100年日期显示错误的问题

这个问题其实是jQuery UI Datepicker的两个默认行为导致的:一是默认日期格式可能用了两位年份(yy),二是两位数年份的解析规则会把小数值年份映射到19xx区间。下面给你几个针对性的解决办法:

1. 强制使用四位年份的日期格式

确保配置里指定四位年份格式,这样输入和显示都会用四位年份,从根源避免解析混乱:

$(document).ready(function() {
  $("#fromDatePickerEnabled_input").datepicker({
    yearRange: '1:9999',
    dateFormat: 'dd/mm/yyyy', // 用yyyy表示四位年份,替换默认的yy
    changeYear: true // 可选,让年份下拉框支持大范围选择
  });
});

2. 修改两位数年份的解析规则

如果需要兼容两位数年份输入,同时正确解析远古年份,可以调整shortYearCutoff选项,把它设为极小值(比如0),这样所有两位数年份都会被解析为公元后对应年份(比如输入01会变成0001而不是1901):

$(document).ready(function() {
  $("#fromDatePickerEnabled_input").datepicker({
    yearRange: '1:9999',
    dateFormat: 'dd/mm/yy', // 保留两位年份格式
    shortYearCutoff: 0, // 关键配置:两位数年份统一解析为00xx
    changeYear: true
  });
});

3. 开启按钮面板辅助选择远古年份

开启showButtonPanel选项后,用户可以通过面板按钮快速定位年份,也能直接输入四位年份,操作更灵活:

$(document).ready(function() {
  $("#fromDatePickerEnabled_input").datepicker({
    yearRange: '1:9999',
    dateFormat: 'dd/mm/yyyy',
    changeYear: true,
    showButtonPanel: true
  });
});

额外注意

  • 尽量使用较新版本的jQuery UI,旧版本对极早年份的支持可能存在bug;
  • 输入日期时优先用四位年份格式(比如01/01/0001),减少歧义;
  • 如果仍有问题,可以手动指定minDate明确范围,比如minDate: new Date(1, 0, 1)(对应公元1年1月1日)。

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

火山引擎 最新活动