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

如何从JavaScript Date获取年份后两位?日期字符串转Date取短年份问题

嘿,我来帮你搞定这两个JavaScript日期处理的问题~

问题1:从JavaScript Date对象中获取年份的最后两位数字

有两种实用方法,你可以根据需求选:

  • 方法1:取模运算
    先用getFullYear()拿到完整的四位数年份,再对100取模,直接得到最后两位数字:

    const date = new Date();
    const shortYear = date.getFullYear() % 100;
    // 比如2024年返回24,2003年返回3
    

    注意:如果年份是2000年,结果会是0;2005年的话会得到单数字5。如果需要强制两位格式(比如05而非5),推荐用下面的方法。

  • 方法2:字符串截取
    把完整年份转成字符串后,直接截取最后两位,不管哪一年都能得到两位结果:

    const date = new Date();
    const shortYear = String(date.getFullYear()).slice(-2);
    // 2005年返回"05",2024年返回"24",结果为字符串类型
    

    如果需要数字类型,再套个Number()转换即可:Number(String(date.getFullYear()).slice(-2))


问题2:解析"30.11.2019"格式的字符串为Date对象并获取短年份

你遇到的问题是new Date("30.11.2019")无法正确解析,因为JavaScript的Date构造函数对日.月.年这种格式兼容性极差,很多浏览器(比如Chrome)会直接返回Invalid Date。解决思路是手动拆分字符串,用明确的年、月、日参数构造Date对象:

步骤1:正确解析字符串为有效Date对象

const dateStr = "30.11.2019";
// 拆分字符串,得到日、月、年的数组
const [day, month, year] = dateStr.split(".");
// 重点:Date的月份是从0开始计数的,所以要把月份减1
const date = new Date(year, month - 1, day);

步骤2:获取短年份

直接复用问题1的方法就行,比如:

// 字符串类型的两位年份
const shortYear = String(date.getFullYear()).slice(-2); // 返回"19"
// 或者数字类型
const shortYearNum = date.getFullYear() % 100; // 返回19

完整可运行示例

const dateStr = "30.11.2019";
const [day, month, year] = dateStr.split(".");
const date = new Date(year, month - 1, day);

// 先验证Date对象是否有效
if (!isNaN(date.getTime())) {
  const shortYear = String(date.getFullYear()).slice(-2);
  console.log(shortYear); // 输出 "19"
} else {
  console.log("日期格式无效,请检查输入");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:56:34