aio-date
Advanced tools
Comparing version 3.0.0 to 4.0.0
701
index.js
@@ -1,68 +0,68 @@ | ||
export default function AIODate(){ | ||
export default function AIODate() { | ||
let $$ = { | ||
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) | ||
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){return false} | ||
date = $$.convertToArray({date}) | ||
let {isLess,isGreater,isEqual} = $$; | ||
for(let i = 0; i < matchers.length; i++){ | ||
let matcher = matchers[i],type,targets; | ||
try{ | ||
let { date, matchers } = obj; | ||
if (!date) { return false } | ||
if (matchers === true) { return true } | ||
if (matchers === false) { return false } | ||
date = $$.convertToArray({ date }) | ||
let { isLess, isGreater, isEqual } = $$; | ||
for (let i = 0; i < matchers.length; i++) { | ||
let matcher = matchers[i], type, targets; | ||
try { | ||
let a = matcher.split(','); | ||
type = a[0]; | ||
targets = a.slice(1,a.length); | ||
targets = a.slice(1, a.length); | ||
} | ||
catch{return false} | ||
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 === '<>'){ | ||
if(targets[0] && targets[1]){ | ||
let start,end; | ||
if(isLess(targets[0],targets[1])){start = targets[0]; end = targets[1];} | ||
else {start = targets[1]; end = targets[0];} | ||
if(isGreater(date,start) && isLess(date,end)){return true} | ||
catch { return false } | ||
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 === '<>') { | ||
if (targets[0] && targets[1]) { | ||
let start, end; | ||
if (isLess(targets[0], targets[1])) { start = targets[0]; end = targets[1]; } | ||
else { start = targets[1]; end = targets[0]; } | ||
if (isGreater(date, start) && isLess(date, end)) { return true } | ||
} | ||
} | ||
else if(type === '<=>'){ | ||
if(targets[0] && targets[1]){ | ||
let start,end; | ||
if(isLess(targets[0],targets[1])){start = targets[0]; end = targets[1];} | ||
else {start = targets[1]; end = targets[0];} | ||
if(isGreater(date,start) && isLess(date,end)){return true} | ||
if(isEqual(date,start) || isEqual(date,end)){return true} | ||
else if (type === '<=>') { | ||
if (targets[0] && targets[1]) { | ||
let start, end; | ||
if (isLess(targets[0], targets[1])) { start = targets[0]; end = targets[1]; } | ||
else { start = targets[1]; end = targets[0]; } | ||
if (isGreater(date, start) && isLess(date, end)) { return true } | ||
if (isEqual(date, start) || isEqual(date, end)) { return true } | ||
} | ||
} | ||
else if(type === '!<>'){ | ||
if(targets[0] && targets[1]){ | ||
let start,end; | ||
if(isLess(targets[0],targets[1])){start = targets[0]; end = targets[1];} | ||
else {start = targets[1]; end = targets[0];} | ||
if(!isGreater(date,start) || !isLess(date,end)){return true} | ||
else if (type === '!<>') { | ||
if (targets[0] && targets[1]) { | ||
let start, end; | ||
if (isLess(targets[0], targets[1])) { start = targets[0]; end = targets[1]; } | ||
else { start = targets[1]; end = targets[0]; } | ||
if (!isGreater(date, start) || !isLess(date, end)) { return true } | ||
} | ||
} | ||
else if(type === '!<=>'){ | ||
if(targets[0] && targets[1]){ | ||
let start,end; | ||
if(isLess(targets[0],targets[1])){start = targets[0]; end = targets[1];} | ||
else {start = targets[1]; end = targets[0];} | ||
if(!isEqual(date,start) && !isEqual(date,end) && (isLess(date,start) || isGreater(date,end))){return true} | ||
else if (type === '!<=>') { | ||
if (targets[0] && targets[1]) { | ||
let start, end; | ||
if (isLess(targets[0], targets[1])) { start = targets[0]; end = targets[1]; } | ||
else { start = targets[1]; end = targets[0]; } | ||
if (!isEqual(date, start) && !isEqual(date, end) && (isLess(date, start) || isGreater(date, end))) { 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 } } | ||
} | ||
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 } } | ||
} | ||
@@ -72,30 +72,30 @@ } | ||
}, | ||
getSplitter(value){ | ||
getSplitter(value) { | ||
let splitter = '/'; | ||
for(let i = 0; i < value.length; i++){ | ||
if(isNaN(parseInt(value[i]))){return value[i]} | ||
for (let i = 0; i < value.length; i++) { | ||
if (isNaN(parseInt(value[i]))) { return value[i] } | ||
} | ||
return splitter; | ||
}, | ||
convertToArray(obj){ | ||
if(!obj || obj.date === undefined){ | ||
convertToArray(obj) { | ||
if (!obj || obj.date === undefined) { | ||
console.error(` | ||
AIODate().convertToArray should get an object as parameter. | ||
{ | ||
*date:number | string | array | ||
}`,obj) | ||
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 { date } = obj; | ||
if (!date) { return [] } | ||
if (Array.isArray(date)) { return [...date] } | ||
else if (typeof date === 'string') { | ||
let list; | ||
if (date.indexOf("T") !== -1){ | ||
if (date.indexOf("T") !== -1) { | ||
//"2015-03-25T12:00:00Z" | ||
let [d,t] = date.split("T"); | ||
let [d, t] = date.split("T"); | ||
t = t.split(".")[0]; | ||
t = t.split(':'); | ||
d = d.split('-'); | ||
list = d.concat(t,0) | ||
list = d.concat(t, 0) | ||
} | ||
@@ -105,5 +105,5 @@ else { | ||
} | ||
return list.map((date)=>parseInt(date)) | ||
return list.map((date) => parseInt(date)) | ||
} | ||
else if(typeof date === 'number'){ | ||
else if (typeof date === 'number') { | ||
let d = new Date(date); | ||
@@ -118,31 +118,34 @@ let year = d.getFullYear(); | ||
let tenthsecond = Math.round(miliseconds / 100); | ||
return [year,month,day,hour,minute,second,tenthsecond] | ||
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 if (typeof date === 'object') { | ||
if(typeof date.year === 'number'){return [date.year,date.month,date.day,date.hour]} | ||
else { | ||
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} | ||
else { return false } | ||
}, | ||
toJalali(obj) { | ||
if(!obj || obj.date === undefined){ | ||
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) | ||
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}); | ||
if (!obj.date) { return } | ||
let arr = $$.convertToArray({ date: obj.date }); | ||
let calendarType = $$.getCalendarType(arr); | ||
if(calendarType === 'jalali'){return arr} | ||
if (calendarType === 'jalali') { return arr } | ||
let [gy, gm, gd] = arr; | ||
@@ -153,30 +156,30 @@ var g_d_m, jy, jm, jd, gy2, days; | ||
days = 355666 + (365 * gy) + ~~((gy2 + 3) / 4) - ~~((gy2 + 99) / 100) + ~~((gy2 + 399) / 400) + gd + g_d_m[gm - 1]; | ||
jy = -1595 + (33 * ~~(days / 12053));days %= 12053;jy += 4 * ~~(days / 1461);days %= 1461; | ||
if (days > 365) {jy += ~~((days - 1) / 365);days = (days - 1) % 365;} | ||
if (days < 186) {jm = 1 + ~~(days / 31);jd = 1 + (days % 31);} else {jm = 7 + ~~((days - 186) / 30);jd = 1 + ((days - 186) % 30);} | ||
jy = -1595 + (33 * ~~(days / 12053)); days %= 12053; jy += 4 * ~~(days / 1461); days %= 1461; | ||
if (days > 365) { jy += ~~((days - 1) / 365); days = (days - 1) % 365; } | ||
if (days < 186) { jm = 1 + ~~(days / 31); jd = 1 + (days % 31); } else { jm = 7 + ~~((days - 186) / 30); jd = 1 + ((days - 186) % 30); } | ||
arr[0] = jy; arr[1] = jm; arr[2] = jd; | ||
if(obj.pattern){return $$.pattern(arr,obj.pattern)} | ||
if (obj.pattern) { return $$.pattern(arr, obj.pattern) } | ||
return arr; | ||
}, | ||
toGregorian(obj) { | ||
if(!obj || obj.date === undefined){ | ||
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) | ||
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}); | ||
if (!obj.date) { return } | ||
let arr = $$.convertToArray({ date: obj.date }); | ||
let calendarType = $$.getCalendarType(arr); | ||
if(calendarType === 'gregorian'){return arr} | ||
if (calendarType === 'gregorian') { return arr } | ||
let [jy, jm, jd] = arr; | ||
var sal_a, gy, gm, gd, days; | ||
jy += 1595;days = -355668 + (365 * jy) + (~~(jy / 33) * 8) + ~~(((jy % 33) + 3) / 4) + jd + ((jm < 7) ? (jm - 1) * 31 : ((jm - 7) * 30) + 186); | ||
gy = 400 * ~~(days / 146097);days %= 146097; | ||
if (days > 36524) {gy += 100 * ~~(--days / 36524);days %= 36524;if (days >= 365) days++;} | ||
gy += 4 * ~~(days / 1461);days %= 1461; | ||
if (days > 365) {gy += ~~((days - 1) / 365);days = (days - 1) % 365;} | ||
jy += 1595; days = -355668 + (365 * jy) + (~~(jy / 33) * 8) + ~~(((jy % 33) + 3) / 4) + jd + ((jm < 7) ? (jm - 1) * 31 : ((jm - 7) * 30) + 186); | ||
gy = 400 * ~~(days / 146097); days %= 146097; | ||
if (days > 36524) { gy += 100 * ~~(--days / 36524); days %= 36524; if (days >= 365) days++; } | ||
gy += 4 * ~~(days / 1461); days %= 1461; | ||
if (days > 365) { gy += ~~((days - 1) / 365); days = (days - 1) % 365; } | ||
gd = days + 1; | ||
@@ -186,68 +189,68 @@ sal_a = [0, 31, ((gy % 4 === 0 && gy % 100 !== 0) || (gy % 400 === 0)) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; | ||
arr[0] = gy; arr[1] = gm; arr[2] = gd; | ||
if(obj.pattern){return $$.pattern(arr,obj.pattern)} | ||
if (obj.pattern) { return $$.pattern(arr, obj.pattern) } | ||
return arr; | ||
}, | ||
compaire(obj){ | ||
if(!obj || obj.date === undefined || obj.otherDate === undefined){ | ||
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) | ||
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 { 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'} | ||
if (a < b) { return 'less' } | ||
if (a > b) { return 'greater' } | ||
} | ||
return 'equal'; | ||
}, | ||
getToCompaire(o1,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 {date:o1,otherDate:o2} | ||
getToCompaire(o1, 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 { date: o1, otherDate: o2 } | ||
}, | ||
isLess(o1,o2){ | ||
if(!o1 || !o2){return false} | ||
return $$.compaire($$.getToCompaire(o1,o2)) === 'less' | ||
isLess(o1, o2) { | ||
if (!o1 || !o2) { return false } | ||
return $$.compaire($$.getToCompaire(o1, o2)) === 'less' | ||
}, | ||
isEqual(o1,o2){ | ||
if(!o1 || !o2){return false} | ||
return $$.compaire($$.getToCompaire(o1,o2)) === 'equal' | ||
isEqual(o1, o2) { | ||
if (!o1 || !o2) { return false } | ||
return $$.compaire($$.getToCompaire(o1, o2)) === 'equal' | ||
}, | ||
isGreater(o1,o2){ | ||
if(!o1 || !o2){return false} | ||
return $$.compaire($$.getToCompaire(o1,o2)) === 'greater' | ||
isGreater(o1, o2) { | ||
if (!o1 || !o2) { return false } | ||
return $$.compaire($$.getToCompaire(o1, o2)) === 'greater' | ||
}, | ||
isBetween(o1,[o2,o3]){ | ||
if(!o1 || !o2 || !o3){return false} | ||
return $$.isGreater(o1,o2) && $$.isLess(o1,o3) | ||
isBetween(o1, [o2, o3]) { | ||
if (!o1 || !o2 || !o3) { return false } | ||
return $$.isGreater(o1, o2) && $$.isLess(o1, o3) | ||
}, | ||
getTime(obj){ | ||
if(!obj || obj.date === undefined){ | ||
getTime(obj) { | ||
if (!obj || obj.date === undefined) { | ||
console.error(` | ||
AIODate().getTime should get an object as parameter. | ||
{ | ||
*date:number | string | array , | ||
}`,obj) | ||
AIODate().getTime should get an object as parameter. | ||
{ | ||
*date:number | string | array , | ||
}`, obj) | ||
return false | ||
} | ||
let {date,calendarType} = obj; | ||
if(!date){return} | ||
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() | ||
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] - 1, date[2]).getTime() | ||
time += hour * 60 * 60 * 1000; | ||
@@ -259,116 +262,157 @@ time += minute * 60 * 1000; | ||
}, | ||
getNextTime(obj){ | ||
if(!obj || obj.date === undefined || isNaN(obj.offset)){ | ||
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) | ||
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 { date, offset, pattern } = obj; | ||
if (!offset || !date) { return date } | ||
let calendarType = $$.getCalendarType(date); | ||
let time = $$.getTime({date,calendarType}); | ||
let time = $$.getTime({ date, calendarType }); | ||
time += offset; | ||
time = $$.convertToArray({date:time}); | ||
if(calendarType === 'jalali' || obj.jalali){ | ||
let [jy,jm,jd] = $$.toJalali({date:time}); | ||
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)} | ||
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;} | ||
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();} | ||
gregorian: (year, month) => { return new Date(year, month - 1, 0).getDate(); } | ||
}, | ||
getMonthDaysLength(obj){ | ||
if(!obj || obj.date === undefined){ | ||
getMonthDaysLength(obj) { | ||
if (!obj || obj.date === undefined) { | ||
console.error(` | ||
AIODate().getMonthDaysLength should get an object as parameter. | ||
{ | ||
*date:number | string | array | ||
} | ||
`,obj) | ||
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' | ||
let { date } = obj; | ||
if (!date) { return } | ||
let [year, month] = $$.convertToArray({ date }); | ||
return $$.GetMonthDaysLength[$$.getCalendarType([year, month])](year, month) | ||
}, | ||
getWeekDay(obj){ | ||
if(!obj || !obj.date){ | ||
console.error(`AIODate().getWeekDay should get an object as parameter. {*date:string | array}`,obj) | ||
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 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'){ | ||
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}; | ||
return { weekDay: $$.getWeekDays({ calendarType })[index], index }; | ||
}, | ||
getWeekDays({calendarType}){ | ||
getDaysOfWeek(obj) { | ||
if (!obj || !obj.date) { | ||
console.error(`AIODate().getDaysOfWeek should get an object as parameter. {*date:string | array}`, obj) | ||
return false | ||
} | ||
let { index } = $$.getWeekDay({ date: obj.date }); | ||
let startDate = $$.getNextTime({ date: [obj.date[0], obj.date[1], obj.date[2]], offset: -(index + 1) * 24 * 60 * 60 * 1000 }); | ||
let endDate = $$.getNextTime({ date: [obj.date[0], obj.date[1], obj.date[2]], offset: (7 - index) * 24 * 60 * 60 * 1000 }); | ||
return $$.getDatesBetween({ date: startDate, otherDate: endDate, pattern: obj.pattern, step: 24 * 60 * 60 * 1000 }) | ||
}, | ||
getDaysOfMonth(obj) { | ||
if (!obj || !obj.date) { | ||
console.error(`AIODate().getLastDayOfMonth should get an object as parameter. {*date:string | array}`, obj) | ||
return false | ||
} | ||
let date = $$.convertToArray({ date: obj.date }); | ||
let firstDay = [date[0], date[1], 1]; | ||
let lastDay = $$.getLastDayOfMonth({ date }) | ||
let betweenDayes = $$.getDatesBetween({ date: firstDay, otherDate: lastDay, step: 24 * 60 * 60 * 1000 }); | ||
let result = [firstDay]; | ||
result = result.concat(betweenDayes); | ||
result.push(lastDay); | ||
if (obj.pattern) { | ||
return result.map((o) => $$.getDateByPattern({ date: o, pattern: obj.pattern })) | ||
} | ||
return result; | ||
}, | ||
getLastDayOfMonth(obj) { | ||
if (!obj || !obj.date) { | ||
console.error(`AIODate().getLastDayOfMonth should get an object as parameter. {*date:string | array}`, obj) | ||
return false | ||
} | ||
let date = $$.convertToArray({ date: obj.date }); | ||
let length = $$.getMonthDaysLength({ date }); | ||
let lastDay = [date[0], date[1], length]; | ||
if (obj.pattern) { | ||
return $$.getDateByPattern({ date: lastDay, pattern: obj.pattern }) | ||
} | ||
return lastDay | ||
}, | ||
getWeekDays({ calendarType }) { | ||
return { | ||
jalali:['شنبه','یکشنبه','دوشنبه','سه شنبه','چهارشنبه','پنجشنبه','جمعه'], | ||
gregorian:['SUNDAY','MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY'] | ||
jalali: ['شنبه', 'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه'], | ||
gregorian: ['SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY'] | ||
}[calendarType] | ||
}, | ||
getMonths({calendarType}){ | ||
getMonths({ calendarType }) { | ||
return { | ||
jalali:['فروردین','اردیبهشت','خرداد','تیر','مرداد','شهریور','مهر','آبان','آذر','دی','بهمن','اسفند',], | ||
gregorian:['JANUARY','FEBRUARY','MARCH','APRIL','MAY','JUNE','JULY','AUGUST','SEPTEMBER','OCTOBER','NOVEMBER','DECEMBER'] | ||
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){ | ||
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}}') | ||
}`) | ||
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 length = $$.getDelta({date,otherDate}).miliseconds / step; | ||
if(isNaN(length) || length > 100){ | ||
let { date, otherDate, step = 24 * 60 * 60 * 1000, pattern } = obj; | ||
date = $$.convertToArray({ date: date }); | ||
otherDate = $$.convertToArray({ date: otherDate }); | ||
if (!$$.isGreater(otherDate, date)) { return [] } | ||
let length = $$.getDelta({ date, otherDate }).miliseconds / step; | ||
if (isNaN(length) || length > 1000) { | ||
console.error('AIODate().getDatesBetween() => too many dates'); | ||
return; | ||
} | ||
let nextDate = $$.getNextTime({date,offset:step}); | ||
let nextDate = $$.getNextTime({ date, offset: step }); | ||
let res = []; | ||
while($$.isLess(nextDate,otherDate)){ | ||
if(pattern){ | ||
res.push($$.pattern(nextDate,pattern)); | ||
while ($$.isLess(nextDate, otherDate)) { | ||
if (pattern) { | ||
res.push($$.pattern(nextDate, pattern)); | ||
} | ||
else{ | ||
else { | ||
res.push(nextDate); | ||
} | ||
nextDate = $$.getNextTime({date:nextDate,offset:step}); | ||
nextDate = $$.getNextTime({ date: nextDate, offset: step }); | ||
} | ||
return res | ||
}, | ||
getToday(obj){ | ||
if(!obj || ['jalali','gregorian'].indexOf(obj.calendarType) === -1){ | ||
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}`) | ||
@@ -378,37 +422,37 @@ 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)} | ||
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'){ | ||
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) | ||
} | ||
let { date, pattern } = obj | ||
return $$.pattern(date, pattern) | ||
}, | ||
pattern(date,pattern){ | ||
date = $$.convertToArray({date}); | ||
let [year,month,day,hour,minute,second,tenthsecond] = date; | ||
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]); | ||
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]); | ||
if (pattern.indexOf('{weekDay}') !== -1) { | ||
let weekDays = $$.getWeekDays({ calendarType }); | ||
let { index } = $$.getWeekDay({ date }); | ||
pattern = pattern.replace('{weekDay}', weekDays[index]); | ||
} | ||
return pattern | ||
}, | ||
getDif(dif){ | ||
getDif(dif) { | ||
let miliseconds = dif; | ||
@@ -424,105 +468,96 @@ let day = Math.floor(dif / (24 * 60 * 60 * 1000)); | ||
let tenthsecond = Math.floor(dif / (100)); | ||
return {day,hour,minute,second,tenthsecond,miliseconds} | ||
return { day, hour, minute, second, tenthsecond, miliseconds } | ||
}, | ||
getDelta(obj){ | ||
if(!obj || !obj.date){ | ||
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}') | ||
}`) | ||
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 { 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) | ||
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'}){ | ||
if(!offset){return date} | ||
let fn = $$['get' + (offset > 0?'Next':'Prev') + {'hour':'Hour','day':'Day','month':'Month','year':'Year'}[unit]]; | ||
getByOffset({ date, offset, unit = 'day', calendarType = 'gregorian' }) { | ||
if (!offset) { return date } | ||
let fn = $$['get' + (offset > 0 ? 'Next' : 'Prev') + { 'hour': 'Hour', 'day': 'Day', 'month': 'Month', 'year': 'Year' }[unit]]; | ||
let abs = Math.abs(offset); | ||
for(let i = 0; i < abs; i++){date = fn(date,calendarType);} | ||
for (let i = 0; i < abs; i++) { date = fn(date, calendarType); } | ||
return date; | ||
}, | ||
getNextYear([year,month]){ | ||
return [year + 1,month,1,0] | ||
getNextYear([year, month]) { | ||
return [year + 1, month, 1, 0] | ||
}, | ||
getPrevYear([year,month]){ | ||
return [year - 1,month,1,0] | ||
getPrevYear([year, month]) { | ||
return [year - 1, month, 1, 0] | ||
}, | ||
getNextHour([year,month,day,hour],calendarType){ | ||
if(hour < 23){return [year,month,day,hour + 1]} | ||
let a = $$.getNextDay([year,month,day],calendarType); | ||
return [a[0],a[1],a[2],0] | ||
getNextHour([year, month, day, hour], calendarType) { | ||
if (hour < 23) { return [year, month, day, hour + 1] } | ||
let a = $$.getNextDay([year, month, day], calendarType); | ||
return [a[0], a[1], a[2], 0] | ||
}, | ||
getPrevHour([year,month,day,hour],calendarType){ | ||
if(hour > 0){return [year,month,day,hour - 1]} | ||
let a = $$.getPrevDay([year,month,day],calendarType); | ||
return [a[0],a[1],a[2],23] | ||
getPrevHour([year, month, day, hour], calendarType) { | ||
if (hour > 0) { return [year, month, day, hour - 1] } | ||
let a = $$.getPrevDay([year, month, day], calendarType); | ||
return [a[0], a[1], a[2], 23] | ||
}, | ||
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]} | ||
return [year + 1,1,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] } | ||
return [year + 1, 1, 1, hour]; | ||
}, | ||
getPrevDay([year,month,day,hour],calendarType){ | ||
if(day > 1){return [year,month,day - 1]} | ||
if(month > 1){ | ||
getPrevDay([year, month, day, hour], calendarType) { | ||
if (day > 1) { return [year, month, day - 1] } | ||
if (month > 1) { | ||
month -= 1; | ||
day = $$.getMonthDaysLength({date:[year,month]}); | ||
return [year,month,day,hour]; | ||
day = $$.getMonthDaysLength({ date: [year, month] }); | ||
return [year, month, day, hour]; | ||
} | ||
year -= 1; | ||
month = 12; | ||
day = $$.getMonthDaysLength({date:[year,month]}); | ||
return [year,month,day,hour]; | ||
day = $$.getMonthDaysLength({ date: [year, month] }); | ||
return [year, month, day, hour]; | ||
}, | ||
getNextMonth([year,month,day,hour]){return month < 12?[year,month + 1,day,hour]:[year + 1,1,1];}, | ||
getPrevMonth([year,month,day,hour]){return month > 1?[year,month - 1,day,hour]:[year - 1,12,1];}, | ||
getNextMonth([year, month, day, hour]) { return month < 12 ? [year, month + 1, day, hour] : [year + 1, 1, 1]; }, | ||
getPrevMonth([year, month, day, hour]) { return month > 1 ? [year, month - 1, day, hour] : [year - 1, 12, 1]; }, | ||
} | ||
return { | ||
getByOffset:$$.getByOffset, | ||
toJalali:$$.toJalali, | ||
toGregorian:$$.toGregorian, | ||
getTime:$$.getTime, | ||
getSplitter:$$.getSplitter, | ||
convertToArray:$$.convertToArray, | ||
compaire:$$.compaire, | ||
isEqual:$$.isEqual, | ||
isGreater:$$.isGreater, | ||
getDelta:$$.getDelta, | ||
isLess:$$.isLess, | ||
isBetween:$$.isBetween, | ||
getMonthDaysLength:$$.getMonthDaysLength, | ||
getWeekDay:$$.getWeekDay, | ||
getWeekDays:$$.getWeekDays, | ||
getMonths:$$.getMonths, | ||
getToday:$$.getToday, | ||
isMatch:$$.isMatch, | ||
getNextTime:$$.getNextTime, | ||
getDatesBetween:$$.getDatesBetween, | ||
getDateByPattern:$$.getDateByPattern | ||
getDaysOfWeek: $$.getDaysOfWeek, | ||
getDaysOfMonth: $$.getDaysOfMonth, | ||
getLastDayOfMonth: $$.getLastDayOfMonth, | ||
getByOffset: $$.getByOffset, | ||
toJalali: $$.toJalali, | ||
toGregorian: $$.toGregorian, | ||
getTime: $$.getTime, | ||
getSplitter: $$.getSplitter, | ||
convertToArray: $$.convertToArray, | ||
compaire: $$.compaire, | ||
isEqual: $$.isEqual, | ||
isGreater: $$.isGreater, | ||
getDelta: $$.getDelta, | ||
isLess: $$.isLess, | ||
isBetween: $$.isBetween, | ||
getMonthDaysLength: $$.getMonthDaysLength, | ||
getWeekDay: $$.getWeekDay, | ||
getWeekDays: $$.getWeekDays, | ||
getMonths: $$.getMonths, | ||
getToday: $$.getToday, | ||
isMatch: $$.isMatch, | ||
getNextTime: $$.getNextTime, | ||
getDatesBetween: $$.getDatesBetween, | ||
getDateByPattern: $$.getDateByPattern | ||
} | ||
} | ||
// 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": "3.0.0", | ||
"version": "4.0.0", | ||
"description": "", | ||
@@ -13,3 +13,3 @@ "main": "index.js", | ||
}, | ||
"author": "", | ||
"author": "mohammad sharif feiz feiz.ms@gmail.com", | ||
"license": "ISC", | ||
@@ -16,0 +16,0 @@ "bugs": { |
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
No contributors or author data
MaintenancePackage does not specify a list of contributors or an author in package.json.
Found 1 instance in 1 package
33525
554
0
1