如何从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
相关产品推荐
相关产品推荐

