UNPKG

@hzy1123581324/z-view-ui

Version:

z-view-ui是使用vue3开发的组件,开发中,有部分组件功能未实现,慎用

252 lines (226 loc) 6.92 kB
import { months } from "moment-timezone"; import {isLeap} from "./test.js"; /** * @description 将输入文本处理成 MM / dd 格式的字符串 * @param {Object} value 要处理的字符串 * @param {Object} cacheval ,旧数据,对比是否进行了规格 */ export function handleMonthDay(value,cacheval){ const month = value.replace(/[^0-9]/ig,'').split('/')[0]; let day = value.replace(/[^0-9]/ig,'').split('/')[1]?.slice(0,2)||''; let montheTargetTxt = ''; let dayTargetTxt = ''; // console.log(month,'****412341234123') if(month.length==1&&month-2>=0){ montheTargetTxt = '0'+ month; }else if(month.length>1&&12 - month>=0){ montheTargetTxt = month.toString(); }else { if(month[0]-1>0){ montheTargetTxt = '0'+ month[0]; // console.log(month.slice(1,month.length),day,'(((((())))))') day = month.slice(1,month.length)+ day; }else{ montheTargetTxt = month.slice(0,2); // console.log(month.slice(2,month.length),day,'(((((())))))') day = month.slice(2,month.length)+ day; } } let maxDay = ''; switch (montheTargetTxt){ case '01': case '03': case '05': case '07': case '08': case '10': case '12': maxDay = '31'; break; case '04': case '06': case '09': case '11': maxDay = '30'; break; default: maxDay = '29'; } if(!day){ dayTargetTxt = ''; }else if(day.length==1&&day-3>0){ dayTargetTxt = '0'+ day; }else if(maxDay - day>=0){ dayTargetTxt = day.toString(); }else{ dayTargetTxt = maxDay } // console.log(montheTargetTxt,dayTargetTxt,'((((((((((()))))))))))'); if(montheTargetTxt + ' / ' + dayTargetTxt == cacheval){ dayTargetTxt+='\u200b'; } if(montheTargetTxt.length==2){ return montheTargetTxt + ' / ' + dayTargetTxt; }else { for(let i=0;i<value.length;i++){ montheTargetTxt+='\u200b'; } return montheTargetTxt; } } /** * @description 将输入文本处理成 YYYY / MM 格式的字符串 * @param {Object} value 要处理的字符串 * @param {Object} cacheval ,旧数据,对比是否进行了规格 */ export function handleYearMonth(value,cacheval){ const year = value.replace(/[^0-9]/ig,'').slice(0,4); let month = value.replace(/[^0-9]/ig,'').slice(4,value.length)||''; // console.log(value.replace(/[^0-9]/ig,'').split('/'),month,'42342') let montheTargetTxt = ''; let yearTargetTxt = ''; if(year.length>4){ yearTargetTxt = year.slice(0,4); }else{ yearTargetTxt = year; month = year.slice(4,year.length) + month; // console.log(year.length,'&&&&&&') } // console.log(month,'****412341234123') if(month-12>=0){ montheTargetTxt = '12'; }else if(month.length==1&&month-1>0){ montheTargetTxt = '0' + month.toString(); }else { montheTargetTxt = month; } // console.log(montheTargetTxt,dayTargetTxt,'((((((((((()))))))))))'); if(yearTargetTxt + ' / ' + montheTargetTxt == cacheval){ montheTargetTxt+='\u200b'; } if(yearTargetTxt.length==4){ return yearTargetTxt + ' / ' + montheTargetTxt; }else { for(let i=0;i<value.length;i++){ yearTargetTxt+='\u200b'; } return yearTargetTxt; } } /** * @description 将输入文本处理成 MM / YYYY 格式的字符串 * @param {Object} value 要处理的字符串 * @param {Object} cacheval ,旧数据,对比是否进行了规格 */ export function handleMonthYear(value,cacheval){ const currentValue = value.replace(/[^0-9]/ig,''); let year = ''; let montheTargetTxt = ''; let yearTargetTxt = ''; if(currentValue[0]-1>0||currentValue.slice(0,2)-12>0){ montheTargetTxt = '0' + currentValue[0]; yearTargetTxt = currentValue.slice(1,5) }else{ montheTargetTxt = currentValue.slice(0,2); yearTargetTxt = currentValue.slice(2,6) } // console.log(montheTargetTxt,dayTargetTxt,'((((((((((()))))))))))'); // console.log(montheTargetTxt,yearTargetTxt,'8888888888'); if(montheTargetTxt.length==2){ if(montheTargetTxt + ' / ' + yearTargetTxt == cacheval){ montheTargetTxt+='\u200b'; } return montheTargetTxt + ' / ' + yearTargetTxt; }else { for(let i=0;i<value.length;i++){ montheTargetTxt+='\u200b'; } return montheTargetTxt; } } /** * @description 获取某年某月的天数 * @param {Object} value 要处理的字符串 * @param {Object} cacheval ,旧数据,对比是否进行了规格 */ export function getMonthDays(month = new Date().getMonth()+1,year = new Date().getFullYear()){ const days = 31; switch (month.toString()){ case '01': case '03': case '05': case '07': case '08': case '1': case '3': case '5': case '7': case '8': case '10': case '12': days = 31; break; case '04': case '06': case '09': case '4': case '6': case '9': case '11': days = 30; break; default: days = isLeap(year)?29:28 break; } return days; } /** * @description 获取时间所在周的周一、周五 * @param {Object} time 当前时间 * @returns {Object} { monday, sunday }  ,返回星期一跟星期日 */ export function getFirstLastDay (time = Date.now()) {                   let date = new Date(time) let Time = date.getTime() let day = date.getDay() let oneDayTime =24*60*60*1000 //周一 let MondayTime = Time - (day - 1) * oneDayTime; //周日 let SundayTime = Time + (7 - day) * oneDayTime; if(day == 0){ MondayTime = Time - 6 * oneDayTime; SundayTime = Time; } let monday =new Date(MondayTime) let sunday = new Date(SundayTime)                return { monday, sunday,current: date }  } /** * @description 返回 time 前后 num 区间 的周列表 * @param {Object} time 时间 * @param {Object} num 前后多少周 * @returns {Object} []{ monday, sunday }  ,返回星期一跟星期日 */ export function getFirstLastDayList(time = Date.now(),num = 50){ const list = []; for(let i = 0;i<num*2;i++){ // 前多 后少一个 list.push(getFirstLastDay(new Date(time).getTime() + (i - num ) * 7 * 24 * 3600 * 1000 )) } return list } /** * @description 返回 time 之前 num 区间 的周列表 * @param {Object} time 时间 * @param {Object} num 前后多少周 * @returns {Object} []{ monday, sunday }  ,返回星期一跟星期日 */ export function getFirstLastDayBeforeList(time = Date.now(),num = 50){ const list = []; for(let i = 0;i<num;i++){ list.push(getFirstLastDay(new Date(time).getTime() + (i - num + 1 ) * 7 * 24 * 3600 * 1000 )) } return list }