aio-date
Advanced tools
Comparing version 1.2.0 to 2.0.0
557
index.js
@@ -1,6 +0,13 @@ | ||
function AIODate(){ | ||
export default function AIODate(){ | ||
let $$ = { | ||
isMatch(dateArray,matchers,calendarType = 'gregorian'){ | ||
isMatch(obj){ | ||
if(!obj || !Array.isArray(obj.matchers) || obj.date === undefined){ | ||
console.error(`AIODate().isMatch should get an object as parameter. {*date:number | string | array,*matchers:array}`,obj) | ||
return false | ||
} | ||
let {date,matchers} = obj; | ||
if(!date){return false} | ||
if(matchers === true){return true} | ||
if(matchers === false || !Array.isArray(matchers)){return false} | ||
if(matchers === false){return false} | ||
date = $$.convertToArray({date}) | ||
let {isLess,isGreater,isEqual} = $$; | ||
@@ -15,8 +22,8 @@ for(let i = 0; i < matchers.length; i++){ | ||
catch{return false} | ||
if(type === '<'){for(let i = 0; i < targets.length; i++){if(isLess(dateArray,targets[i])){return true}}} | ||
else if(type === '>'){for(let i = 0; i < targets.length; i++){if(isGreater(dateArray,targets[i])){return true}}} | ||
else if(type === '<='){for(let i = 0; i < targets.length; i++){if(isEqual(dateArray,targets[i])){return true}if(isLess(dateArray,targets[i])){return true}}} | ||
else if(type === '>='){for(let i = 0; i < targets.length; i++){if(isEqual(dateArray,targets[i])){return true}if(isGreater(dateArray,targets[i])){return true}}} | ||
else if(type === '='){for(let i = 0; i < targets.length; i++){if(isEqual(dateArray,targets[i])){return true}}} | ||
else if(type === '!='){for(let i = 0; i < targets.length; i++){if(!isEqual(dateArray,targets[i])){return true}}} | ||
if(type === '<'){for(let i = 0; i < targets.length; i++){if(isLess(date,targets[i])){return true}}} | ||
else if(type === '>'){for(let i = 0; i < targets.length; i++){if(isGreater(date,targets[i])){return true}}} | ||
else if(type === '<='){for(let i = 0; i < targets.length; i++){if(isEqual(date,targets[i])){return true}if(isLess(date,targets[i])){return true}}} | ||
else if(type === '>='){for(let i = 0; i < targets.length; i++){if(isEqual(date,targets[i])){return true}if(isGreater(date,targets[i])){return true}}} | ||
else if(type === '='){for(let i = 0; i < targets.length; i++){if(isEqual(date,targets[i])){return true}}} | ||
else if(type === '!='){for(let i = 0; i < targets.length; i++){if(!isEqual(date,targets[i])){return true}}} | ||
else if(type === '<>'){ | ||
@@ -27,3 +34,3 @@ if(targets[0] && targets[1]){ | ||
else {start = targets[1]; end = targets[0];} | ||
if(isGreater(dateArray,start) && isLess(dateArray,end)){return true} | ||
if(isGreater(date,start) && isLess(date,end)){return true} | ||
} | ||
@@ -36,4 +43,4 @@ } | ||
else {start = targets[1]; end = targets[0];} | ||
if(isGreater(dateArray,start) && isLess(dateArray,end)){return true} | ||
if(isEqual(dateArray,start) || isEqual(dateArray,end)){return true} | ||
if(isGreater(date,start) && isLess(date,end)){return true} | ||
if(isEqual(date,start) || isEqual(date,end)){return true} | ||
} | ||
@@ -46,3 +53,3 @@ } | ||
else {start = targets[1]; end = targets[0];} | ||
if(!isGreater(dateArray,start) || !isLess(dateArray,end)){return true} | ||
if(!isGreater(date,start) || !isLess(date,end)){return true} | ||
} | ||
@@ -55,10 +62,13 @@ } | ||
else {start = targets[1]; end = targets[0];} | ||
if(!isEqual(dateArray,start) && !isEqual(dateArray,end) && (isLess(dateArray,start) || isGreater(dateArray,end))){return true} | ||
if(!isEqual(date,start) && !isEqual(date,end) && (isLess(date,start) || isGreater(date,end))){return true} | ||
} | ||
} | ||
else if(type[0] === 'w'){ | ||
let w = $$.getWeekDay(dateArray,calendarType).index; | ||
if(type === 'w='){for(let i = 0; i < targets.length; i++){if(w === targets[i]){return true}}} | ||
else if(type === 'w!='){for(let i = 0; i < targets.length; i++){if(w !== targets[i]){return true}}} | ||
else if(type === 'w'){ | ||
let w = $$.getWeekDay({date}).index; | ||
for(let i = 0; i < targets.length; i++){if(w === +targets[i]){return true}} | ||
} | ||
else if(type === '!w'){ | ||
let w = $$.getWeekDay({date}).index; | ||
for(let i = 0; i < targets.length; i++){if(w !== +targets[i]){return true}} | ||
} | ||
} | ||
@@ -74,12 +84,69 @@ return false | ||
}, | ||
convertToArray(o){ | ||
if(Array.isArray(o)){return [...o]} | ||
else if(typeof o === 'string'){ | ||
let list = o.split($$.getSplitter(o)); | ||
return list.map((o)=>parseInt(o)) | ||
convertToArray(obj){ | ||
if(!obj || obj.date === undefined){ | ||
console.error(` | ||
AIODate().convertToArray should get an object as parameter. | ||
{ | ||
*date:number | string | array | ||
}`,obj) | ||
return false | ||
} | ||
let {date} = obj; | ||
if(!date){return []} | ||
if(Array.isArray(date)){return [...date]} | ||
else if(typeof date === 'string'){ | ||
let list; | ||
if (date.indexOf("T") !== -1){ | ||
//"2015-03-25T12:00:00Z" | ||
let [d,t] = date.split("T"); | ||
t = t.split(".")[0]; | ||
t = t.split(':'); | ||
d = d.split('-'); | ||
list = d.concat(t,0) | ||
} | ||
else { | ||
list = date.split($$.getSplitter(date)); | ||
} | ||
return list.map((date)=>parseInt(date)) | ||
} | ||
else if(typeof date === 'number'){ | ||
let d = new Date(date); | ||
let year = d.getFullYear(); | ||
let month = d.getMonth() + 1; | ||
let day = d.getDate(); | ||
let hour = d.getHours(); | ||
let minute = d.getMinutes(); | ||
let second = d.getSeconds(); | ||
let miliseconds = d.getMilliseconds(); | ||
let tenthsecond = Math.round(miliseconds / 100); | ||
return [year,month,day,hour,minute,second,tenthsecond] | ||
} | ||
else if(typeof date === 'object'){ | ||
let year = date.getFullYear(); | ||
let month = date.getMonth() + 1; | ||
let day = date.getDate(); | ||
let hour = date.getHours(); | ||
let minute = date.getMinutes(); | ||
let second = date.getSeconds(); | ||
let miliseconds = date.getMilliseconds(); | ||
let tenthsecond = Math.round(miliseconds / 100); | ||
return [year,month,day,hour,minute,second,tenthsecond] | ||
} | ||
else{return false} | ||
}, | ||
gregorianToJalali(o) { | ||
let [gy, gm, gd] = $$.convertToArray(o); | ||
toJalali(obj) { | ||
if(!obj || obj.date === undefined){ | ||
console.error(` | ||
AIODate().toJalali should get an object as parameter. | ||
{ | ||
*date:number | string | array , | ||
pattern:string (example: {year}/{month}/{day}) | ||
}`,obj) | ||
return false | ||
} | ||
if(!obj.date){return} | ||
let arr = $$.convertToArray({date:obj.date}); | ||
let calendarType = $$.getCalendarType(arr); | ||
if(calendarType === 'jalali'){return arr} | ||
let [gy, gm, gd] = arr; | ||
var g_d_m, jy, jm, jd, gy2, days; | ||
@@ -92,6 +159,21 @@ g_d_m = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; | ||
if (days < 186) {jm = 1 + ~~(days / 31);jd = 1 + (days % 31);} else {jm = 7 + ~~((days - 186) / 30);jd = 1 + ((days - 186) % 30);} | ||
return [jy, jm, jd]; | ||
arr[0] = jy; arr[1] = jm; arr[2] = jd; | ||
if(obj.pattern){return $$.pattern(arr,obj.pattern)} | ||
return arr; | ||
}, | ||
jalaliToGregorian(o) { | ||
let [jy, jm, jd] = $$.convertToArray(o); | ||
toGregorian(obj) { | ||
if(!obj || obj.date === undefined){ | ||
console.error(` | ||
AIODate().toGregorian should get an object as parameter. | ||
{ | ||
*date:number | string | array , | ||
pattern:string (example: {year}/{month}/{day}) | ||
}`,obj) | ||
return false | ||
} | ||
if(!obj.date){return} | ||
let arr = $$.convertToArray({date:obj.date}); | ||
let calendarType = $$.getCalendarType(arr); | ||
if(calendarType === 'gregorian'){return arr} | ||
let [jy, jm, jd] = arr; | ||
var sal_a, gy, gm, gd, days; | ||
@@ -106,32 +188,47 @@ jy += 1595;days = -355668 + (365 * jy) + (~~(jy / 33) * 8) + ~~(((jy % 33) + 3) / 4) + jd + ((jm < 7) ? (jm - 1) * 31 : ((jm - 7) * 30) + 186); | ||
for (gm = 0; gm < 13 && gd > sal_a[gm]; gm++) gd -= sal_a[gm]; | ||
return [gy, gm, gd]; | ||
arr[0] = gy; arr[1] = gm; arr[2] = gd; | ||
if(obj.pattern){return $$.pattern(arr,obj.pattern)} | ||
return arr; | ||
}, | ||
compaireDate([year1,month1,day1,hour1],[year2,month2,day2,hour2]){ | ||
if(year1 < year2){return 'less'} | ||
if(year1 > year2){return 'greater'} | ||
if(month1 < month2){return 'less'} | ||
if(month1 > month2){return 'greater'} | ||
if(day1 < day2){return 'less'} | ||
if(day1 > day2){return 'greater'} | ||
if(hour1 < hour2){return 'less'} | ||
if(hour1 > hour2){return 'greater'} | ||
compaire(obj){ | ||
if(!obj || obj.date === undefined || obj.otherDate === undefined){ | ||
console.error(` | ||
AIODate().compaire should get an object as parameter. | ||
{ | ||
*date:number | string | array , | ||
*otherDate:number | string | array , | ||
} | ||
and returns 'greater' | 'less' | 'equal' | ||
`,obj) | ||
return false | ||
} | ||
let {date,otherDate} = obj; | ||
if(!date || !otherDate){return} | ||
let arr1 = $$.convertToArray({date}); | ||
let arr2 = $$.convertToArray({date:otherDate}); | ||
for(let i = 0; i < arr1.length; i++){ | ||
let a = arr1[i]; | ||
let b = arr2[i] || 0; | ||
if(a < b){return 'less'} | ||
if(a > b){return 'greater'} | ||
} | ||
return 'equal'; | ||
}, | ||
getToCompaire(o1,o2){ | ||
o1 = $$.convertToArray(o1); | ||
o2 = $$.convertToArray(o2); | ||
o1 = $$.convertToArray({date:o1}); | ||
o2 = $$.convertToArray({date:o2}); | ||
for(let i = 0; i < o1.length; i++){if(isNaN(o2[i])){o2[i] = o1[i]}} | ||
return [o1,o2] | ||
return {date:o1,otherDate:o2} | ||
}, | ||
isLess(o1,o2){ | ||
if(!o1 || !o2){return false} | ||
return $$.compaireDate(...$$.getToCompaire(o1,o2)) === 'less' | ||
return $$.compaire($$.getToCompaire(o1,o2)) === 'less' | ||
}, | ||
isEqual(o1,o2){ | ||
if(!o1 || !o2){return false} | ||
return $$.compaireDate(...$$.getToCompaire(o1,o2)) === 'equal' | ||
return $$.compaire($$.getToCompaire(o1,o2)) === 'equal' | ||
}, | ||
isGreater(o1,o2){ | ||
if(!o1 || !o2){return false} | ||
return $$.compaireDate(...$$.getToCompaire(o1,o2)) === 'greater' | ||
return $$.compaire($$.getToCompaire(o1,o2)) === 'greater' | ||
}, | ||
@@ -142,2 +239,207 @@ isBetween(o1,[o2,o3]){ | ||
}, | ||
getTime(obj){ | ||
if(!obj || obj.date === undefined){ | ||
console.error(` | ||
AIODate().getTime should get an object as parameter. | ||
{ | ||
*date:number | string | array , | ||
}`,obj) | ||
return false | ||
} | ||
let {date,calendarType} = obj; | ||
if(!date){return} | ||
calendarType = calendarType || $$.getCalendarType(date); | ||
if(typeof date === 'number'){return date} | ||
date = $$.convertToArray({date}); | ||
let [year,month = 1,day = 1,hour = 0,minute = 0,second = 0,tenthsecond = 0] = date; | ||
if(calendarType === 'jalali'){date = $$.toGregorian({date:[year,month,day,hour,minute,second,tenthsecond]})} | ||
let time = new Date([date[0],date[1],date[2]]).getTime() | ||
time += hour * 60 * 60 * 1000; | ||
time += minute * 60 * 1000; | ||
time += second * 1000; | ||
time += tenthsecond * 100; | ||
return time; | ||
}, | ||
getNextTime(obj){ | ||
if(!obj || obj.date === undefined || isNaN(obj.offset)){ | ||
console.error(` | ||
AIODate().getNextTime should get an object as parameter. | ||
{ | ||
*date:number | string | array , | ||
*offset : number(miliseconds) , | ||
jalali : boolean(return result by jalali date), | ||
pattern:string (example: {year}/{month}/{day}) | ||
}`,obj) | ||
return false | ||
} | ||
let {date,offset,pattern} = obj; | ||
if(!offset || !date){return date} | ||
let calendarType = $$.getCalendarType(date); | ||
let time = $$.getTime({date,calendarType}); | ||
time += offset; | ||
time = $$.convertToArray({date:time}); | ||
if(calendarType === 'jalali' || obj.jalali){ | ||
let [jy,jm,jd] = $$.toJalali({date:time}); | ||
time[0] = jy; time[1] = jm; time[2] = jd; | ||
} | ||
if(pattern){return $$.pattern(time,pattern)} | ||
return time; | ||
}, | ||
GetMonthDaysLength:{ | ||
jalali:(year,month)=>{ | ||
if(month <= 6){return 31;} | ||
if(month <= 11){return 30;} | ||
if([1,5,9,13,17,22,26,30].indexOf(year % 33) === -1){return 29;} | ||
return 30; | ||
}, | ||
gregorian:(year,month)=>{return new Date(year, month, 0).getDate();} | ||
}, | ||
getMonthDaysLength(obj){ | ||
if(!obj || obj.date === undefined){ | ||
console.error(` | ||
AIODate().getMonthDaysLength should get an object as parameter. | ||
{ | ||
*date:number | string | array | ||
} | ||
`,obj) | ||
return false | ||
} | ||
let {date} = obj; | ||
if(!date){return} | ||
let [year,month] = $$.convertToArray({date}); | ||
return $$.GetMonthDaysLength[$$.getCalendarType([year,month])](year,month)}, | ||
getCalendarType(date){ | ||
return $$.convertToArray({date})[0] < 1700?'jalali':'gregorian' | ||
}, | ||
getWeekDay(obj){ | ||
if(!obj || !obj.date){ | ||
console.error(`AIODate().getWeekDay should get an object as parameter. {*date:string | array}`,obj) | ||
return false | ||
} | ||
let date = $$.convertToArray({date:obj.date}); | ||
let calendarType = $$.getCalendarType(date); | ||
date = $$.toGregorian({date}) | ||
let index = new Date(date[0],date[1] - 1,date[2]).getDay(); | ||
if(calendarType === 'jalali'){ | ||
index += 1; | ||
index = index % 7; | ||
} | ||
return {weekDay:$$.getWeekDays({calendarType})[index],index}; | ||
}, | ||
getWeekDays({calendarType}){ | ||
return { | ||
jalali:['شنبه','یکشنبه','دوشنبه','سه شنبه','چهارشنبه','پنجشنبه','جمعه'], | ||
gregorian:['SUNDAY','MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY'] | ||
}[calendarType] | ||
}, | ||
getMonths({calendarType}){ | ||
return { | ||
jalali:['فروردین','اردیبهشت','خرداد','تیر','مرداد','شهریور','مهر','آبان','آذر','دی','بهمن','اسفند',], | ||
gregorian:['JANUARY','FEBRUARY','MARCH','APRIL','MAY','JUNE','JULY','AUGUST','SEPTEMBER','OCTOBER','NOVEMBER','DECEMBER'] | ||
}[calendarType] | ||
}, | ||
getDatesBetween(obj){ | ||
if(!obj || obj.date === undefined || obj.otherDate === undefined){ | ||
console.error(` | ||
AIODate().getDatesBetween should get an object as parameter. | ||
{ | ||
*date:number | array | string, | ||
*otherDate:number | array | string, | ||
*step:number(miliseconds. default is 24 * 60 * 60 * 1000), | ||
pattern:string (example '{year/{month}/{day}}') | ||
}`) | ||
return false; | ||
} | ||
let {date,otherDate,step = 24 * 60 * 60 * 1000,pattern} = obj; | ||
date = $$.convertToArray({date:date}); | ||
otherDate = $$.convertToArray({date:otherDate}); | ||
if(!$$.isGreater(otherDate,date)){return []} | ||
let nextDate = $$.getNextTime({date,offset:step}); | ||
let res = []; | ||
while($$.isLess(nextDate,otherDate)){ | ||
if(pattern){ | ||
res.push($$.pattern(nextDate,pattern)); | ||
} | ||
else{ | ||
res.push(nextDate); | ||
} | ||
nextDate = $$.getNextTime({date:nextDate,offset:step}); | ||
} | ||
return res | ||
}, | ||
getToday(obj){ | ||
if(!obj || ['jalali','gregorian'].indexOf(obj.calendarType) === -1){ | ||
console.error(`AIODate().getToday should get an object as parameter. {*calendarType:'gregorian' | 'jalali',pattern:string}`) | ||
return false; | ||
} | ||
let date = new Date(); | ||
date = [date.getFullYear(),date.getMonth() + 1,date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds(),Math.round(date.getMilliseconds() / 100)] | ||
if(obj.calendarType === 'jalali'){date = $$.toJalali({date})} | ||
if(obj.pattern){return $$.pattern(date,obj.pattern)} | ||
return date; | ||
}, | ||
getDateByPattern(obj){ | ||
if(!obj || !obj.date || typeof obj.pattern !== 'string'){ | ||
console.error(`AIODate().getDateByPattern should get an object as parameter. {*date:number | string | array,*pattern:string}`) | ||
return false; | ||
} | ||
let {date,pattern} = obj | ||
return $$.pattern(date,pattern) | ||
}, | ||
pattern(date,pattern){ | ||
date = $$.convertToArray({date}); | ||
let [year,month,day,hour,minute,second,tenthsecond] = date; | ||
let calendarType = $$.getCalendarType(date); | ||
pattern = pattern.replace('{year}',year); | ||
pattern = pattern.replace('{month}',month); | ||
pattern = pattern.replace('{day}',day); | ||
pattern = pattern.replace('{hour}',hour); | ||
pattern = pattern.replace('{minute}',minute); | ||
pattern = pattern.replace('{second}',second); | ||
pattern = pattern.replace('{tenthsecond}',tenthsecond); | ||
if(pattern.indexOf('{monthString}') !== -1){ | ||
pattern = pattern.replace('{monthString}',$$.getMonths({calendarType})[month - 1]); | ||
} | ||
if(pattern.indexOf('{weekDay}') !== -1){ | ||
let weekDays = $$.getWeekDays({calendarType}); | ||
let {index} = $$.getWeekDay({date}); | ||
pattern = pattern.replace('{weekDay}',weekDays[index]); | ||
} | ||
return pattern | ||
}, | ||
getDif(dif){ | ||
let day = Math.floor(dif / (24 * 60 * 60 * 1000)); | ||
dif -= day * (24 * 60 * 60 * 1000); | ||
let hour = Math.floor(dif / (60 * 60 * 1000)); | ||
dif -= hour * (60 * 60 * 1000); | ||
let minute = Math.floor(dif / (60 * 1000)); | ||
dif -= minute * (60 * 1000); | ||
let second = Math.floor(dif / (1000)); | ||
dif -= second * (1000); | ||
let tenthsecond = Math.floor(dif / (100)); | ||
return {day,hour,minute,second,tenthsecond} | ||
}, | ||
getDelta(obj){ | ||
if(!obj || !obj.date){ | ||
console.error(` | ||
AIODate().getDelta should get an object as parameter. | ||
{ | ||
*date:number | string | array, | ||
otherDate:number | string | array, (default is now), | ||
pattern:string (example: '{year}/{month}/{day}') | ||
}`) | ||
return false; | ||
} | ||
let {date,otherDate = new Date().getTime(),pattern} = obj; | ||
let dif = $$.getTime({date}) - $$.getTime({date:otherDate}); | ||
let res; | ||
if(dif === 0){res = {day:0,hour:0,minute:0,second:0,tenthsecond:0,type:'now'}} | ||
if(dif < 0 ){res = {...$$.getDif(-dif),type:'passed'}} | ||
if(dif > 0 ){res = {...$$.getDif(dif),type:'remaining'}} | ||
if(pattern){ | ||
let {day,hour,minute,second,tenthsecond} = res; | ||
return $$.pattern([0,0,day,hour,minute,second,tenthsecond],pattern) | ||
} | ||
return res | ||
}, | ||
getByOffset({date,offset,unit = 'day',calendarType = 'gregorian'}){ | ||
@@ -166,4 +468,4 @@ if(!offset){return date} | ||
}, | ||
getNextDay([year,month,day,hour],calendarType){ | ||
if(day < $$.getMonthDaysLength([year,month],calendarType)){return [year,month,day + 1,hour]} | ||
getNextDay([year,month,day,hour]){ | ||
if(day < $$.getMonthDaysLength({date:[year,month]})){return [year,month,day + 1,hour]} | ||
if(month < 12){return [year,month + 1,1,hour]} | ||
@@ -176,3 +478,3 @@ return [year + 1,1,1,hour]; | ||
month -= 1; | ||
day = $$.getMonthDaysLength([year,month],calendarType); | ||
day = $$.getMonthDaysLength({date:[year,month]}); | ||
return [year,month,day,hour]; | ||
@@ -182,3 +484,3 @@ } | ||
month = 12; | ||
day = $$.getMonthDaysLength([year,month],calendarType); | ||
day = $$.getMonthDaysLength({date:[year,month]}); | ||
return [year,month,day,hour]; | ||
@@ -188,146 +490,16 @@ }, | ||
getPrevMonth([year,month,day,hour]){return month > 1?[year,month - 1,day,hour]:[year - 1,12,1];}, | ||
GetMonthDaysLength:{ | ||
jalali:(year,month)=>{ | ||
if(month <= 6){return 31;} | ||
if(month <= 11){return 30;} | ||
if([1,5,9,13,17,22,26,30].indexOf(year % 33) === -1){return 29;} | ||
return 30; | ||
}, | ||
gregorian:(year,month)=>{return new Date(year, month, 0).getDate();} | ||
}, | ||
getMonthDaysLength([year,month],calendarType){return $$.GetMonthDaysLength[calendarType](year,month)}, | ||
GetWeekDay:{ | ||
jalali:([year,month,day])=>{ | ||
var offset; | ||
var weekDays = $$.getWeekDays('jalali'); | ||
if($$.isEqual([year,month,day],[1399,12,30])){offset = 0;} | ||
else if($$.isLess([year,month,day],[1399,12,30])){ | ||
offset = (-$$.getDaysBetween([year,month,day],[1399,12,30]) - 1) % 7; | ||
if(offset < 0){offset += 7} | ||
} | ||
else{offset = ($$.getDaysBetween([1399,12,30],[year,month,day]) + 1) % 7;} | ||
return {weekDay:weekDays[offset],index:offset}; | ||
}, | ||
gregorian:([year,month,day])=>{ | ||
var offset = new Date(year,month - 1,day).getDay(); | ||
var weekDays = $$.getWeekDays('gregorian'); | ||
return {weekDay:weekDays[offset],index:offset}; | ||
} | ||
}, | ||
getWeekDay(date,calendarType = 'gregorian'){return $$.GetWeekDay[calendarType](date)}, | ||
getWeekDays(calendarType){ | ||
return { | ||
jalali:['شنبه','یکشنبه','دوشنبه','سه شنبه','چهارشنبه','پنجشنبه','جمعه'], | ||
gregorian:['SUNDAY','MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY'] | ||
}[calendarType] | ||
}, | ||
getMonths(calendarType){ | ||
return { | ||
jalali:['فروردین','اردیبهشت','خرداد','تیر','مرداد','شهریور','مهر','آبان','آذر','دی','بهمن','اسفند',], | ||
gregorian:['JANUARY','FEBRUARY','MARCH','APRIL','MAY','JUNE','JULY','AUGUST','SEPTEMBER','OCTOBER','NOVEMBER','DECEMBER'] | ||
}[calendarType] | ||
}, | ||
getDatesBetween(start,end,calendarType = 'gregorian'){ | ||
let type = Array.isArray(start)?'array':'string'; | ||
start = $$.convertToArray(start); | ||
end = $$.convertToArray(end); | ||
if(!$$.isGreater(end,start)){return []} | ||
let nextDate = $$.getNextDay(start,calendarType); | ||
let res = []; | ||
while($$.isLess(nextDate,end)){ | ||
res.push(type === 'array'?nextDate:`${nextDate[0]}/${nextDate[1]}/${nextDate[2]}`); | ||
nextDate = $$.getNextDay(nextDate,calendarType); | ||
} | ||
return res | ||
}, | ||
getDaysBetween(start,end){ | ||
if(end[0] - start[0] === 0){return Math.max($$.getDayIndexInYear(end) - $$.getDayIndexInYear(start) - 1,0);} | ||
var result = 0; | ||
if(end[0] - start[0] > 1){ | ||
var leaps = $$.getLeapBetweenYears(start[0],end[0]); | ||
var notLeaps = Math.max(end[0] - start[0] - 1 - leaps,0); | ||
result = leaps * 366 + notLeaps * 365; | ||
} | ||
result += $$.getDayIndexInYear(end) - 1; | ||
result += ([1,5,9,13,17,22,26,30].indexOf(start[0] % 33) !== -1?366:365) - $$.getDayIndexInYear(start); | ||
return result; | ||
}, | ||
getDayIndexInYear([year,month,day]){ | ||
let index = 0; | ||
for(let i = 1; i < month; i++){index += i <= 6 ? 31 : 30;} | ||
return index + day; | ||
}, | ||
getLeapBetweenYears(start,end){ | ||
var count = 0; | ||
start++; | ||
while(start < end){ | ||
if([1,5,9,13,17,22,26,30].indexOf(start % 33) !== -1){count++;} | ||
start++; | ||
} | ||
return count; | ||
}, | ||
GetToday:{ | ||
jalali:(unit)=>{ | ||
let dateObject = new Date(); | ||
var date = dateObject.toLocaleDateString('fa-IR').split('/'); | ||
var dic = {'۰':0,'۱':1,'۲':2,'۳':3,'۴':4,'۵':5,'۶':6,'۷':7,'۸':8,'۹':9}; | ||
for(var j = 0; j < date.length; j++){ | ||
var str = ''; | ||
for(var i = 0; i < date[j].length; i++){str+= dic[date[j][i]]; } | ||
date[j] = Number(str); | ||
} | ||
date.push(dateObject.getHours()); | ||
date.push(dateObject.getMinutes()); | ||
return date; | ||
}, | ||
gregorian:(unit)=>{ | ||
var date = new Date(); | ||
var result = [date.getFullYear(),date.getMonth() + 1,date.getDate(),date.getHours(),date.getMinutes()] | ||
return result; | ||
} | ||
}, | ||
getToday(calendarType,unit = 'day'){return $$.GetToday[calendarType](unit)}, | ||
getPassedTime:(time)=>{ | ||
time = new Date(time).getTime(); | ||
let now = new Date().getTime(); | ||
let dif = now - time; | ||
if(dif <= 0){return {days:0,hours:0,minutes:0,seconds:0,tenthseconds:0}} | ||
let days = Math.floor(dif / (24 * 60 * 60 * 1000)); | ||
dif -= days * (24 * 60 * 60 * 1000); | ||
let hours = Math.floor(dif / (60 * 60 * 1000)); | ||
dif -= hours * (60 * 60 * 1000); | ||
let minutes = Math.floor(dif / (60 * 1000)); | ||
dif -= minutes * (60 * 1000); | ||
let seconds = Math.floor(dif / (1000)); | ||
dif -= seconds * (1000); | ||
let tenthseconds = Math.floor(dif / (100)); | ||
return {days,hours,minutes,seconds,tenthseconds} | ||
}, | ||
getRemainingTime:(time)=>{ | ||
time = new Date(time).getTime(); | ||
let now = new Date().getTime(); | ||
let dif = time - now; | ||
if(dif <= 0){return {days:0,hours:0,minutes:0,seconds:0,tenthseconds:0}} | ||
let days = Math.floor(dif / (24 * 60 * 60 * 1000)); | ||
dif -= days * (24 * 60 * 60 * 1000); | ||
let hours = Math.floor(dif / (60 * 60 * 1000)); | ||
dif -= hours * (60 * 60 * 1000); | ||
let minutes = Math.floor(dif / (60 * 1000)); | ||
dif -= minutes * (60 * 1000); | ||
let seconds = Math.floor(dif / (1000)); | ||
dif -= seconds * (1000); | ||
let tenthseconds = Math.floor(dif / (100)); | ||
return {days,hours,minutes,seconds,tenthseconds} | ||
} | ||
} | ||
return { | ||
gregorianToJalali:$$.gregorianToJalali, | ||
jalaliToGregorian:$$.jalaliToGregorian, | ||
getByOffset:$$.getByOffset, | ||
toJalali:$$.toJalali, | ||
toGregorian:$$.toGregorian, | ||
getTime:$$.getTime, | ||
getSplitter:$$.getSplitter, | ||
convertToArray:$$.convertToArray, | ||
compaire:$$.compaire, | ||
isEqual:$$.isEqual, | ||
isGreater:$$.isGreater, | ||
getDelta:$$.getDelta, | ||
isLess:$$.isLess, | ||
isBetween:$$.isBetween, | ||
getByOffset:$$.getByOffset, | ||
getMonthDaysLength:$$.getMonthDaysLength, | ||
@@ -339,7 +511,18 @@ getWeekDay:$$.getWeekDay, | ||
isMatch:$$.isMatch, | ||
getNextTime:$$.getNextTime, | ||
getDatesBetween:$$.getDatesBetween, | ||
getPassedTime:$$.getPassedTime, | ||
getRemainingTime:$$.getRemainingTime | ||
getDateByPattern:$$.getDateByPattern | ||
} | ||
} | ||
export default AIODate | ||
// getToday {calendarType,pattern} | ||
// isMatch {matchers,date} | ||
// getWeekDay {calnedarType,date} | ||
// getDateOffset getDelta({*date,otherDate,pattern}) return {day,hour,minute,second,tenthsecond} | ||
// getByOffset getNextTime {date,offset,pattern,jalali} | ||
// remove getPassedTime getRemainingTime | ||
// calendarType only in getWeekDays getMonths getToday | ||
// all functions get one object as parameter | ||
//gregorianToJalali => toJalali ({*date,pattern}) | ||
//jalaliToGregorian => toGregorian ({*date,pattern}) | ||
//getDaysBetween removed instead use getDelta | ||
//getMonthDaysLength ({*date}) |
{ | ||
"name": "aio-date", | ||
"version": "1.2.0", | ||
"version": "2.0.0", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
21440
513
1