// 处理时间 export const handleDate = (dateTimeStamp = new Date()) => { dateTimeStamp = dateTimeStamp ? dateTimeStamp : null; if (!dateTimeStamp) return "刚刚"; var timestamp = new Date(dateTimeStamp); timestamp = timestamp.getTime(); var minute = 1000 * 60; var hour = minute * 60; var day = hour * 24; var now = new Date().getTime(); var diffValue = now - timestamp; var result; if (diffValue < 0) return; var dayC = diffValue / day; var hourC = diffValue / (hour + 1); var minC = diffValue / minute; if (dayC >= 7) { let date = new Date(timestamp); let Y = date.getFullYear() + "-"; let M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-"; let D = (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " "; // let h = (date.getHours() < 10 ? "0" + date.getHours() : date.getHours()) + ":" // let m = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes() result = "" + Y + M + D; } else if (dayC >= 1) result = "" + Math.round(dayC) + "天前"; else if (hourC >= 1) result = "" + Math.round(hourC) + "小时前"; else if (minC >= 1) result = "" + Math.round(minC) + "分钟前"; else result = "刚刚"; return result; }; // 处理 截止时间 export const handleDeadline = (dateTimeStamp = new Date()) => { if (typeof dateTimeStamp == "number") dateTimeStamp = dateTimeStamp ? dateTimeStamp * 1000 : null; if (typeof dateTimeStamp == "string" && dateTimeStamp.match(/^\d{4}-\d{2}-\d{2}$/)) dateTimeStamp += " 23:59:59"; var timestamp = new Date(dateTimeStamp); timestamp = timestamp.getTime(); var minute = 1000 * 60; var hour = minute * 60; var day = hour * 24; var now = new Date().getTime(); var diffValue = timestamp - now; var result; if (diffValue < 0) return "投票已"; var dayC = diffValue / day; var hourC = diffValue / (hour + 1); var minC = diffValue / minute; if (dayC >= 1) result = "" + Math.round(dayC) + "天后"; else if (hourC >= 1) result = "" + Math.round(hourC) + "小时后"; else if (minC >= 1) result = "" + Math.round(minC) + "分钟后"; return result; }; export const timestampToDate = (timestamp) => { var date = new Date(timestamp); var year = date.getFullYear(); var month = ("0" + (date.getMonth() + 1)).slice(-2); // Months are zero based. Add leading 0. var day = ("0" + date.getDate()).slice(-2); // Add leading 0. return `${year}-${month}-${day}`; }; // isblank 是否需要 新标签页 默认是新标签页 export const goToURL = (url, isblank = true) => { if (typeof document !== "object") return; let aTab = document.createElement("a"); document.body.appendChild(aTab); aTab.setAttribute("href", url); if (isblank) aTab.setAttribute("target", "_blank"); aTab.click(); }; export const colourValue = [ { main: "rgba(44, 186, 230, 1)", bg: "rgba(234, 245, 248, 1)", bc: "rgba(213, 235, 242, 1)", }, { main: "rgba(49, 215, 46, 1)", bg: "rgba(244, 247, 244, 1)", bc: "rgba(225, 244, 225, 1)", }, { main: "rgba(106, 117, 217, 1)", bg: "rgba(237, 238, 247, 1)", bc: "rgba(227, 228, 246, 1)", }, { main: "rgba(172, 183, 46, 1)", bg: "rgba(245, 246, 228, 1)", bc: "rgba(238, 238, 215, 1)", }, { main: "rgba(38, 223, 190, 1)", bg: "rgba(237, 247, 245, 1)", bc: "rgba(220, 244, 239, 1)", }, { main: "rgba(242, 122, 71, 1)", bg: "rgba(255, 244, 239, 1)", bc: "rgba(249, 231, 224, 1)", }, ]; export const base62ToDecimal = (base62) => { const base = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; let decimal = 0; for (let i = 0; i < base62.length; i++) { decimal += base.indexOf(base62[i]) * Math.pow(62, base62.length - i - 1); } return decimal; }; export const managerHide = (token, state, type = "offer") => { return new Promise((resolve, reject) => { const obj = { offer: "Offer", offer_summary: "总结", interviewexperience: "面经", thread: "帖子", question: "帖子", vote: "投票", }; const isConfirmed = confirm(`确定要${state == 0 ? "隐藏" : "显示"}该${obj[type]}吗?`); if (isConfirmed) { topicHideHttp({ token, hidden: Number(state !== 1), }).then((res) => { const data = res.data; creationAlertBox("success", res.message || ""); resolve(data.hidden); }); } }); }; // 推荐 export const managerRecommend = (token, state) => { return new Promise((resolve, reject) => { const post = () => { topicRecommendHttp({ token, recommend: state == 1 ? 0 : 1, }).then((res) => { const data = res.data; creationAlertBox("success", res.message || ""); resolve(data.recommend); }); }; if (state == 1) { const isConfirmed = confirm(`确定要取消推荐吗?`); if (isConfirmed) post(); else resolve(state); } else post(); }); }; // 精华 export const managerEssence = (token, state) => { return new Promise((resolve, reject) => { const post = () => { topicEssenceHttp({ token, best: state == 1 ? 0 : 1, }).then((res) => { const data = res.data; creationAlertBox("success", res.message || ""); resolve(data.best); }); }; if (state == 1) { const isConfirmed = confirm(`确定要取消精华吗?`); if (isConfirmed) post(); else resolve(state); } else post(); }); }; // 删除 export const managerDelete = (token) => { return new Promise((resolve, reject) => { const post = () => { topicDeleteHttp({ token, }).then((res) => { creationAlertBox("success", res.message || ""); resolve(); }); }; const isConfirmed = confirm(`确定要删除吗?`); if (!isConfirmed) reject(); else post(); }); }; export const strtimeago = (dateStr, type = 1) => { dateStr = dateStr + ""; // 反之传入的不是字符串 dateStr = dateStr.replaceAll("-", "/"); // 修改格式 var minute = 1000 * 60; // 把分,时,天,周,半个月,一个月用毫秒表示 var hour = minute * 60; var day = hour * 24; var now = new Date().getTime(); // 获取当前时间毫秒 let objectTime = new Date(dateStr).getTime(); var diffValue = now - objectTime; // 时间差 if (diffValue < 0) return "刚刚"; var minC = diffValue / minute; // 计算时间差的分,时,天,周,月 var hourC = diffValue / hour; var dayC = diffValue / day; const diffInMilliseconds = now - objectTime; const diffInYears = diffInMilliseconds / (1000 * 60 * 60 * 24 * 365); const diffInMonths = diffInYears * 12; let result = ""; if (dayC >= 7) { var datetime = new Date(dateStr); var Nyear = datetime.getFullYear(); var Nmonth = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1; var Ndate = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate(); var Nhour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours(); var Nmin = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes(); if (type == 4) { if (new Date().getFullYear() !== Nyear) result = `${Nyear}年${Nmonth}月${Ndate}日`; else result = `${Nmonth}月${Ndate}日 ${Nhour}:${Nmin}`; } if (type == 1) result = Nyear + "-" + Nmonth + "-" + Ndate; if (type == 2) { result = `${Nmonth}月${Ndate}日 ${Nhour}:${Nmin}`; if (new Date().getFullYear() !== Nyear) result = `${Nyear}年${result}`; } if (type == 3) { if (diffInYears >= 1) result = Math.floor(diffInYears) + "年前"; else if (diffInMonths >= 1) result = Math.floor(diffInMonths) + "个月前"; else result = parseInt(dayC) + "天前"; } } else if (dayC >= 1) result = parseInt(dayC) + "天前"; else if (hourC >= 1 && hourC <= 24) result = parseInt(hourC) + "小时前"; else if (minC >= 1 && minC <= 60) result = parseInt(minC) + "分钟前"; else result = "刚刚"; return result; };