最近公司突然让维护一个 jsp 项目又复习了一把 js,其中用到的一些简单的方法记录下来;
将日期对象转换为 8 位日期
function getDateStr(date){
var year = date.getFullYear().toString();
var month = (date.getMonth() + 1 < 10) ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1).toString();
var day = (date.getDate() < 10) ? '0' + date.getDate() : date.getDate().toString();
return year + month + day;
}
在使用这个方法时犯了一个很低级的错误没有注意到 js 是弱类型语言,起初没有给date.getDate()加 toString();导致在拼接大于 10 的日期时会出现 number 类型相加的场景;
错误代码:
function getDateStr(date){
var year = date.getFullYear();
var month = (date.getMonth() + 1 < 10) ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1);
var day = (date.getDate() < 10) ? '0' + date.getDate() : date.getDate();
return year + month + day;
}
如 20241001 调用此方法会返回 2024+10+"01"最终得到 203401
year和month是 number 类型的而day是string 类型
将8 位日期转换为日期对象
function parseCustomDate(dateString) {
// 验证日期字符串长度是否为8
if (dateString.length !== 8) {
throw new Error('Invalid date string format. It should be 8 characters long including the year, month, and day.');
}
// 分割字符串并组合成标准的日期格式
const year = dateString.substring(0, 4);
const month = dateString.substring(4, 6);
const day = dateString.substring(6, 8);
const formattedDate = `${year}-${month}-${day}`;
// 解析日期字符串并返回日期对象
return new Date(formattedDate);
}