记录一下常用到的时间转换:把格式化日期时间封装成一个方法,需要的时候单独调用即可
1. 将2023.06.13转换成2023-06-13
//格式化时间
getNowFormatDate(date) {
// let date = new Date(),
let year = date.getFullYear(), //获取完整的年份(4位)
month = date.getMonth() + 1, //获取当前月份(0-11,0代表1月)
strDate = date.getDate(); // 获取当前日(1-31)
if (month < 10) month = `0${month}`; // 如果月份是个位数,在前面补0
if (strDate < 10) strDate = `0${strDate}`; // 如果日是个位数,在前面补0
return `${year}-${month}-${strDate}`;
},
2. 将时间戳转换为 2023-06-13 11:17:23
formattedDate(timestamp){
const date = new Date(timestamp);
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, '0');
const day = date.getDate().toString().padStart(2, '0');
const hour = date.getHours().toString().padStart(2, '0');
const minute = date.getMinutes().toString().padStart(2, '0');
const second = date.getSeconds().toString().padStart(2, '0');
const formattedDate = `${year}-${month}-${day} ${hour}:${minute}:${second}`;
return formattedDate
}
// 假设有一个时间戳变量 timestamp
const timestamp = 1615957883000;
const newDate = this.formattedDate(timestamp)
console.log(newDate); //打印结果为 2023-06-13 11:17:23
3. 把格式化星期封装成一个方法,需要的时候单独调用即可
getWeek(time){
// 定义星期的缩写
const show_day = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
const now = new Date(time); // 获取当前时间
const dayOfWeek = now.getDay(); // 获取星期几
return show_day[dayOfWeek];
}
console.log(show_day[dayOfWeek]); //星期二
4. 日期时间字符串转换格式,例如:
20230304162053 转换成 2023-03-04 16:20:53
const date = '20230304162053'
const newDate = date.replace(/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/, '$1-$2-$3 $4:$5:$6');
console.log(newDate);
5.封装时间转换函数,跟据当前的时间戳转换。并且根据传参today就返回今日的开始时间和结束时间,传参week就返回本周的开始时间和结束时间,传参month就返回本月的开始时间和结束时间
function getTimeRange(type) { function getCurrentWeekRange() { const currentDate = new Date(); // 获取本周的第一天,星期一为一周的起始 const start = new Date( currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate() - currentDate.getDay() + 1 ); // 获取本周的最后一天,星期日为一周的结束 const end = new Date( currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate() + (7 - currentDate.getDay()) ); return { start: formatDate(start), end: formatDate(end) }; } function getCurrentMonthRange() { const currentDate = new Date(); // 获取本月的第一天 const start = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1); // 获取下个月的第一天 const nextMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 1); // 获取本月的最后一天 const end = new Date(nextMonth - 1); return { start: formatDate(start), end: formatDate(end) }; } function getCurrentDayRange() { const currentDate = new Date(); // 获取今日的开始时间 const start = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()); // 获取今日的结束时间 const end = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate() + 1); return { start: formatDate(start), end: formatDate(end) }; } function formatDate(date) { const year = date.getFullYear(); const month = (date.getMonth() + 1).toString().padStart(2, '0'); const day = date.getDate().toString().padStart(2, '0'); return [year, month, day].join('-'); } if (type === 'week') { return getCurrentWeekRange(); } else if (type === 'month') { return getCurrentMonthRange(); } else if (type === 'today') { return getCurrentDayRange(); } else { return null; } }
// getTimeRange函数的使用示例 const weekRange = getTimeRange('week'); const monthRange = getTimeRange('month'); const todayRange = getTimeRange('today'); //本周 console.log("本周开始时间:", weekRange.start); //2023-08-07 console.log("本周结束时间:", weekRange.end); //2023-08-13 //本月 console.log("本月开始时间:", monthRange.start); //2023-08-01 console.log("本月结束时间:", monthRange.end); //2023-08-31 //今日 console.log("今日开始时间:", todayRange.start); //2023-08-07 console.log("今日结束时间:", todayRange.end); //2023-08-07
格式化之前的时间戳,一定要是数字型,不能是字符串,否则会出现NaN