const dateTimePicker = (startYear, endYear) => { // 生成年份数组 const years = []; for (let i = startYear; i <= endYear; i++) { years.push(i.toString()); } // 生成月份数组 const months = []; for (let i = 1; i <= 12; i++) { months.push(i < 10 ? `0${i}` : i.toString()); } // 生成日期数组 const days = []; for (let i = 1; i <= 31; i++) { days.push(i < 10 ? `0${i}` : i.toString()); } // 生成小时数组 const hours = []; for (let i = 0; i < 24; i++) { hours.push(i < 10 ? `0${i}` : i.toString()); } // 生成分钟数组 const minutes = []; for (let i = 0; i < 60; i++) { minutes.push(i < 10 ? `0${i}` : i.toString()); } // 生成秒数组 const seconds = []; for (let i = 0; i < 60; i++) { seconds.push(i < 10 ? `0${i}` : i.toString()); } // 获取当前日期和时间 const now = new Date(); const currentYear = now.getFullYear().toString(); const currentMonth = (now.getMonth() + 1).toString().padStart(2, '0'); const currentDay = now.getDate().toString().padStart(2, '0'); const currentHour = now.getHours().toString().padStart(2, '0'); const currentMinute = now.getMinutes().toString().padStart(2, '0'); const currentSecond = now.getSeconds().toString().padStart(2, '0'); // 获取默认选中的索引 const dateTime = [ years.indexOf(currentYear), months.indexOf(currentMonth), days.indexOf(currentDay), hours.indexOf(currentHour), minutes.indexOf(currentMinute), seconds.indexOf(currentSecond) ]; // 返回包含所有数组和默认选中索引的对象 const dateTimeArray = [years, months, days, hours, minutes, seconds]; return { dateTimeArray, dateTime }; } const pxToRpx = (pxValue, screenWidth) => { console.log('转换Px', pxValue, '屏幕宽度', screenWidth) // return pxValue * (750 / screenWidth); const rpx = (750 / screenWidth) * Number(pxValue) return Math.floor(rpx); } const rpxToPx = (rpxValue, screenWidth) => { return rpxValue * screenWidth / 750; } const formatTime = date => { const year = date.getFullYear() const month = date.getMonth() + 1 const day = date.getDate() const hour = date.getHours() const minute = date.getMinutes() const second = date.getSeconds() return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') } /** * * @param {*} date */ const formatDate = date => { const year = date.getFullYear() const month = date.getMonth() + 1 const day = date.getDate() return [year, month, day].map(formatNumber).join('-') } const formatNumber = n => { n = n.toString() return n[1] ? n : '0' + n } //随机生成暖色系 const randomLightColor = () => { // 暖色系的范围通常是红色和黄色较多,所以红色分量范围从 128 到 255 let red = Math.floor(Math.random() * 128) + 128; // 绿色分量范围从 64 到 255 let green = Math.floor(Math.random() * 192) + 64; // 蓝色分量范围从 0 到 128 let blue = Math.floor(Math.random() * 128); // 将十进制的 RGB 分量转换为十六进制,并确保长度为 2 位 let redHex = red.toString(16).padStart(2, '0'); let greenHex = green.toString(16).padStart(2, '0'); let blueHex = blue.toString(16).padStart(2, '0'); // 组合成十六进制颜色代码 return '#' + redHex + greenHex + blueHex; } //随机生成冷色系 const randomDarkColor = () => { // 冷色系通常蓝色和绿色较多,所以蓝色分量范围从 128 到 255 let blue = Math.floor(Math.random() * 128) + 128; // 绿色分量范围从 128 到 255 let green = Math.floor(Math.random() * 128) + 128; // 红色分量范围从 0 到 128 let red = Math.floor(Math.random() * 128); // 将十进制的 RGB 分量转换为十六进制,并确保长度为 2 位 let redHex = red.toString(16).padStart(2, '0'); let greenHex = green.toString(16).padStart(2, '0'); let blueHex = blue.toString(16).padStart(2, '0'); // 组合成十六进制颜色代码 return '#' + redHex + greenHex + blueHex; } const randomRgbColor = () => { // 随机生成RGB颜色 var r = Math.floor(Math.random() * 256); // 随机生成256以内r值 var g = Math.floor(Math.random() * 256); // 随机生成256以内g值 var b = Math.floor(Math.random() * 256); // 随机生成256以内b值 return `rgb(${r},${g},${b})`; // 返回rgb(r,g,b)格式颜色 } const randomRgbaColor = () => { // 随机生成RGBA颜色 var r = Math.floor(Math.random() * 256); // 随机生成256以内r值 var g = Math.floor(Math.random() * 256); // 随机生成256以内g值 var b = Math.floor(Math.random() * 256); // 随机生成256以内b值 var alpha = Math.random(); // 随机生成1以内a值 return `rgba(${r},${g},${b},${alpha})`; // 返回rgba(r,g,b,a)格式颜色 } const formatRichText = (html) => { let newContent = html.replace(/)*>/gi, function(match, capture) { match = match.replace(/style="(^")+"/gi, '').replace(/style='(^')+'/gi, ''); match = match.replace(/width="(^")+"/gi, '').replace(/width='(^')+'/gi, ''); match = match.replace(/height="(^")+"/gi, '').replace(/height='(^')+'/gi, ''); return match; }); newContent = newContent.replace(/style="(^")+"/gi, function(match, capture) { match = match.replace(/width:(^;)+;/gi, 'max-width:100%;').replace(/width:(^;)+;/gi, 'max-width:100%;'); return match; }); newContent = newContent.replace(/)*\/>/gi, ''); newContent = newContent.replace(/\ { // 匹配 标签 let imgTags = richText.match(/]*>/g); if (imgTags) { imgTags.forEach((imgTag) => { // 去除 style 属性 let newImgTag = imgTag.replace(/ style="[^"]*"/g, ''); richText = richText.replace(imgTag, newImgTag); }); } return richText; } //生成32位随机字符串 const random32Str = () => { const charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; let randomString = ''; for (let i = 0; i < 32; i++) { const randomIndex = Math.floor(Math.random() * charSet.length); randomString += charSet.charAt(randomIndex); } return randomString; } /** * 获取当前日期 */ const currentDate = () => { const now = new Date(); const year = now.getFullYear(); const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份+1(0~11) const day = String(now.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; } export { formatTime, formatDate, randomRgbColor, randomRgbaColor, randomDarkColor, randomLightColor, formatRichText, removeImgStyleFromRichText, dateTimePicker, pxToRpx, random32Str, rpxToPx, currentDate }