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

设置值时日期异常变为1969年12月31日问题排查

问题分析与解决办法

这问题挺有意思的,我碰到过类似的情况,大概率是下面两个原因之一,咱们一步步拆解:

1. HTML5日期输入框的格式要求不匹配

如果你的隐藏输入框类型是<input type="date">,那这就是最可能的原因!HTML5的date输入类型强制要求值必须是YYYY-MM-DD格式,而你的gettoday()函数返回的是DD/MM/YYYY(比如25/10/2024),浏览器无法解析这个格式,就会默认显示无效日期——也就是你看到的31/12/1969(对应Unix时间戳0的前一天,无效日期的常见默认显示)。

解决办法:

  • 如果你需要保留date输入类型(比如要用到浏览器自带的日期选择器),修改gettoday()函数返回符合要求的格式:
function gettoday() {
  var d = new Date();
  var month = String(d.getMonth() + 1).padStart(2, '0');
  var day = String(d.getDate()).padStart(2, '0');
  var year = d.getFullYear();
  return `${year}-${month}-${day}`; // 输出格式:2024-10-25
}
  • 如果不需要日期选择器,把输入框的类型改成<input type="text">,这样就能正常显示你原来的DD/MM/YYYY格式了。

2. jQuery设置值的方法不正确

你用了something.attr('value', String(gettoday()));来设置输入框的值,但在jQuery中,设置表单元素的当前值应该用val()方法,而不是attr()。attr()是用来设置元素的初始属性值,动态更新表单值时,attr()可能不会正确同步到DOM的实际显示值上,尤其是部分浏览器对表单元素的value属性有特殊处理逻辑。

解决办法:

把设置值的代码改成:

something.val(gettoday());

你可以先检查输入框的type属性,如果是date就先调整格式,再配合val()方法,应该就能解决问题了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:48:19