| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- 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;
|