话不多说,我们时间不多
工作中常用的时间工具函数!
1.获取自定义格式化时间
/**
* @param {String} fmt 自定义格式化时间类型(可选)
* @returns 格式时间
*/
Date.prototype.format = function (fmt = "yyyy-MM-dd hh:mm:ss") {
const o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), // 季度
S: this.getMilliseconds(), // 毫秒
};
//根据y的长度截取年
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
(this.getFullYear() + "").substr(4 - RegExp.$1.length)
);
}
for (let k in o) {
if (new RegExp(`(${k})`).test(fmt)) {
fmt = fmt.replace(
RegExp.$1,
RegExp.$1.length === 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
);
}
}
return fmt;
};
2.获取格式化时间YYYY-MM-DD HH:mm:ss
/**
* 传入时间轴,返回格式化时间
* @param {Date} date 时间轴 (可选)
* @returns 年-月-日 时:分:秒
*/
export function getFormatTime(date = new Date()) {
const paddingZero = (num) => {
return num < 10 ? ("0" + num) : num;
};
const year = date.getFullYear();
const month = paddingZero(parseInt(date.getMonth()) + 1);
const day = paddingZero(date.getDate());
const hour = paddingZero(date.getHours());
const min = paddingZero(date.getMinutes());
const second = paddingZero(date.getSeconds());
return `${[year, month, day].join("-")} ${hour}:${min}:${second}`;
}
3.获取星期
/**
* 传入时间轴,返回星期几
* @param {Date} date 时间轴 (可选)
* @returns 星期?
*/
export function getWeek(date = new Date()) {
return "星期" + "日一二三四五六".charAt(date.getDay());
};
4.获取月份
/**
* 传入时间轴,返回月份
* @param {Date} date 传入时间戳
* @returns 当前月份
*/
export function getMonth(date = new Date()) {
const day = date.getMonth();
const months = [
{
zh: "一月",
en: "January",
},
{
zh: "二月",
en: "February",
},
{
zh: "三月",
en: "March",
},
{
zh: "四月",
en: "April",
},
{
zh: "五月",
en: "May",
},
{
zh: "六月",
en: "June",
},
{
zh: "七月",
en: "July",
},
{
zh: "八月",
en: "August",
},
{
zh: "九月",
en: "September",
},
{
zh: "十月",
en: "October",
},
{
zh: "十一月",
en: "November",
},
{
zh: "十二月",
en: "December",
},
];
months[day].key = day + 1;
return months[day];
}
5.计算剩余时间的方法(倒计时)
/**
* 对传入时间对比当前时间 返回剩余时间
* @param {Date} time 传入时间戳
* @returns 剩余时间
*/
export function leftTime(time = Date.now()) {
const paddingZero = (num) => {
return num < 10 ? "0" + num : num;
};
const leftTime = time - Date.now();
const Day = paddingZero(parseInt(leftTime / 1000 / 60 / 60 / 24, 10));
const Hour = paddingZero(parseInt((leftTime / 1000 / 60 / 60) % 24, 10));
const Min = paddingZero(parseInt((leftTime / 1000 / 60) % 60, 10));
const Sec = paddingZero(parseInt((leftTime / 1000) % 60, 10));
return {
Day,
Hour,
Min,
Sec,
};
}
6.获取某一天所在的星期范围
/**
* getWeekRange("2021-8-24");
* @param {Date} date:"2021-8-24"字符串时间
* @returns [周开始,周结束]
*/
function getWeekRange(date) {
if (!date) return;
const now = new Date(date);
const nowDayOfWeek = now.getDay();//获取星期几
const nowDay = now.getDate();//获取当月的日期
const nowMonth = now.getMonth();
let nowYear = now.getYear();
nowYear += nowYear < 2000 ? 1900 : 0;
const weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 1); // 获取周一
const weekEndDate = new Date(nowYear, nowMonth, nowDay + (7 - nowDayOfWeek)); // 获取周日
return [weekStartDate, weekEndDate];
}
7.获取某一天至截止年份剩余的天数
/**
* getLeftYear()
* @param {Date} now 时间戳
* @param {Number} year 截止年份
* @returns 距离截止年份结束还剩余的天数
*/
function getLeftYear(
now = new Date("2020-07-30"),
year = new Date().getFullYear() + 1
) {
const nextyear = year;
const lastday = new Date(new Date(nextyear, 0, 1) - 1);
const diff = lastday - now;
return Math.ceil(diff / (1000 * 60 * 60 * 24));
}