qa-prevention-gwj-first-app/components/rattenking-dtpicker/GetDate.js

268 lines
7.2 KiB
JavaScript

const GetDate = {
withData: (num) => {
let param = parseInt(num);
return param < 10 ? '0' + param : '' + param;
},
getTimes(str){
var strs = str.split(' ');
var strs1 = strs[0] ? strs[0].split('-') : '2000-01-01'.split('-');
var strs2 = strs[1] ? strs[1].split(':') : '00:00:00'.split(':');
var year = strs1[0] ? strs1[0] : 2000;
var month = strs1[1] ? strs1[1] : 1;
var day = strs1[2] ? strs1[2] : 1;
var hour = strs2[0] ? strs2[0] : 0;
var minute = strs2[1] ? strs2[1] : 0;
var second = strs2[2] ? strs2[2] : 0;
var newstr = year +'/'+ month +'/'+ day +' '+ hour +':'+ minute +':'+ second;
return new Date(newstr.replace(/-/g,'/')).getTime();
},
getCurrentTimes(time = new Date()){
const date = new Date(time);
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 {
detail: {
year: year,
month: month,
day: day,
hour: hour,
minute: minute,
second: second
}
}
},
format(arr){
let curarr = [];
let curarr0 = [];
let str = '';
arr.forEach((cur,index) => {
let o = GetDate.withData(cur);
if(index > 2){
curarr.push(o);
}else{
curarr0.push(o);
}
})
if(arr.length < 4){
str = curarr0.join('-');
}else{
str = curarr0.join('-') + ' ' + curarr.join(':');
}
return str;
},
getCurrentStringValue(str){
let newstr = str.split(' ');
if(newstr && newstr[1]){
let arr = [...newstr[0].split('-'),...newstr[1].split(':')];
return arr;
}
return newstr[0].split('-');
},
getCompare(curp,startp,endp,timesp){
let cur = GetDate.getTimes(curp);
let start = GetDate.getTimes(startp);
let end = GetDate.getTimes(endp);
if(cur < start){
return GetDate.getTimeIndex(timesp,GetDate.getCurrentStringValue(startp));
}else if(cur > end){
return GetDate.getTimeIndex(timesp,GetDate.getCurrentStringValue(endp));
}else{
return GetDate.getTimeIndex(timesp,GetDate.getCurrentStringValue(curp));
}
},
getChooseArr(times,indexs){
let arr = [];
times.forEach((cur,index) => arr.push(cur[indexs[index]]));
return arr;
},
getNewArray(arr){
let newarr = [];
arr.forEach(cur => newarr.push(cur));
return newarr;
},
getLoopArray: (start, end) => {
var start = start || 0;
var end = end || 1;
var array = [];
for (var i = start; i <= end; i++) {
array.push(GetDate.withData(i));
}
return array;
},
getMonthDay: (year, month) => {
var flag = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0), array = null;
switch (month) {
case '01':
case '03':
case '05':
case '07':
case '08':
case '10':
case '12':
array = GetDate.getLoopArray(1, 31)
break;
case '04':
case '06':
case '09':
case '11':
array = GetDate.getLoopArray(1, 30)
break;
case '02':
array = flag ? GetDate.getLoopArray(1, 29) : GetDate.getLoopArray(1, 28)
break;
default:
array = GetDate.getLoopArray(1, 31)
}
return array;
},
getIndependentTimes(opts){
var {
startTimes,
endTimes,
curTimes,
fields
} = opts;
var {
year:startyear = 2021,
month:startmonth = 1,
day:startday = 1,
hour:starthour = 0,
minute:startminute = 0,
second:startsecond = 0
} = startTimes;
var {
year:endyear = 2021,
month:endmonth = 1,
day:endday = 1,
hour:endhour = 0,
minute:endminute = 0,
second:endsecond = 0
} = endTimes;
var {
year:curyear = 2021,
month:curmonth = 1,
day:curday = 1,
hour:curhour = 0,
minute:curminute = 0,
second:cursecond = 0
} = curTimes;
return {
startyear,
startmonth,
startday,
starthour,
startminute,
startsecond,
endyear,
endmonth,
endday,
endhour,
endminute,
endsecond,
curyear,
curmonth,
curday,
curhour,
curminute,
cursecond
}
},
getYears(opts){
var years = GetDate.getLoopArray(opts.startyear, opts.endyear);
return years;
},
getMonths(opts){
var months = GetDate.getLoopArray(1, 12);
if(opts.curyear == opts.startyear){
months = months.filter(cur => cur >= opts.startmonth);
}
if(opts.curyear == opts.endyear){
months = months.filter(cur => cur <= opts.endmonth);
}
return months;
},
getDays(opts){
var days = GetDate.getMonthDay(opts.curyear, GetDate.withData(opts.curmonth));
if(opts.curyear == opts.startyear && opts.curmonth == opts.startmonth){
days = days.filter(cur => cur >= opts.startday);
}
if(opts.curyear == opts.endyear && opts.curmonth == opts.endmonth){
days = days.filter(cur => cur <= opts.endday);
}
return days;
},
getHours(opts){
var hours = GetDate.getLoopArray(0, 23);
if(opts.curyear == opts.startyear && opts.curmonth == opts.startmonth && opts.curday == opts.startday){
hours = hours.filter(cur => cur >= opts.starthour);
}
if(opts.curyear == opts.endyear && opts.curmonth == opts.endmonth && opts.curday == opts.endday){
hours = hours.filter(cur => cur <= opts.endhour);
}
return hours;
},
getMinutes(opts){
var minutes = GetDate.getLoopArray(0, 59);
if(opts.curyear == opts.startyear && opts.curmonth == opts.startmonth && opts.curday == opts.startday && opts.curhour == opts.starthour){
minutes = minutes.filter(cur => cur >= opts.startminute);
}
if(opts.curyear == opts.endyear && opts.curmonth == opts.endmonth && opts.curday == opts.endday && opts.curhour == opts.endhour){
minutes = minutes.filter(cur => cur <= opts.endminute);
}
return minutes;
},
getSeconds(opts){
var seconds = GetDate.getLoopArray(0, 59);
if(opts.curyear == opts.startyear && opts.curmonth == opts.startmonth && opts.curday == opts.startday && opts.curhour == opts.starthour && opts.curminute == opts.startminute){
seconds = seconds.filter(cur => cur >= opts.startsecond);
}
if(opts.curyear == opts.endyear && opts.curmonth == opts.endmonth && opts.curday == opts.endday && opts.curhour == opts.endhour && opts.curminute == opts.endminute){
seconds = seconds.filter(cur => cur <= opts.endsecond);
}
return seconds;
},
getDateTimes: (opts) => {
var alltimes = GetDate.getIndependentTimes(opts);
var years = GetDate.getYears(alltimes);
var months = GetDate.getMonths(alltimes);
var days = GetDate.getDays(alltimes);
var hours = GetDate.getHours(alltimes);
var minutes = GetDate.getMinutes(alltimes);
var seconds = GetDate.getSeconds(alltimes);
var times = {
year: [years],
month: [years, months],
day: [years, months, days],
hour: [years, months, days, hours],
minute: [years, months, days, hours, minutes],
second: [years, months, days, hours, minutes, seconds]
};
return times[opts.fields] || times.second;
},
getIndex(arr,target){
let len = arr.length;
for(let i = 0; i < len; i++){
if(arr[i] == target){
return i;
}
}
},
getTimeIndex(arrs, targets){
let len = arrs.length;
let arr = [];
for(let i = 0; i < len; i++){
arr.push(GetDate.getIndex(arrs[i], targets[i]))
}
return arr;
},
error(str){
console.error(str);
}
}
module.exports = GetDate;