@hzy1123581324/z-view-ui
Version:
z-view-ui是使用vue3开发的组件,开发中,有部分组件功能未实现,慎用
252 lines (226 loc) • 6.92 kB
JavaScript
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
}