话不多说直接上代码
// 获取当前时间
let now = new Date();
// 往前推6个月
now.setMonth(now.getMonth() - 6);
// 去掉时分秒,设置为 00:00:00
now.setHours(0, 0, 0, 0);
// 构造六个月前的结束时间
let end = new Date();
end.setMonth(end.getMonth() - 6);
end.setHours(23, 59, 59, 999);
// 将时间格式化为字符串
let startStr = formatDate(now);
let endStr = formatDate(end);
// 打印结果
console.log(startStr); // 输出六个月前的起始时间
console.log(endStr); // 输出当前时间的终止时间
// 格式化日期为 yyyy-MM-dd HH:mm:ss
function formatDate(date) {
let year = date.getFullYear();
let month = (date.getMonth() + 1).toString().padStart(2, '0');
let day = date.getDate().toString().padStart(2, '0');
let hour = date.getHours().toString().padStart(2, '0');
let minute = date.getMinutes().toString().padStart(2, '0');
let second = date.getSeconds().toString().padStart(2, '0');
return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
}
补充:.padStart()方法
.padStart() 是字符串对象自带的方法之一,用于在字符串的左侧填充指定的字符,直到字符串达到指定的长度。
.padStart() 接收两个参数:
targetLength- 目标长度,即字符串最终要达到的长度,必须是一个非负整数。padString(可选) - 用来填充的字符串,如果省略这个参数,默认使用空格填充。
例如,如果我们想要将字符串 “123” 填充到长度为 5,左侧填充 “0”,可以这样写:
let str = '123';
str = str.padStart(5, '0'); // "00123"
如果 targetLength 小于当前字符串的长度,则不进行填充,直接返回原始字符串。
这个方法通常用于做格式化字符串,例如上面的例子中,可以用来将年月日、时分秒等各个部分填充到固定的长度,便于处理和展示。