Advertisement
Sam1D

ArrayDate

Jul 7th, 2020
991
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const startDate = "01-05-2020";
  2. const endDate = "31-07-2020";
  3.  
  4. const getRangeMonth = (startDate, endDate) => {
  5.   /* CONFIG VARIABLE */
  6.   const monthNames = [
  7.     "Jan",
  8.     "Feb",
  9.     "Mar",
  10.     "Apr",
  11.     "Mei",
  12.     "Jun",
  13.     "Jul",
  14.     "Agu",
  15.     "Sep",
  16.     "Okt",
  17.     "Nov",
  18.     "Des",
  19.   ];
  20.   const startDateSplit = startDate.split("-");
  21.   const endDateSplit = endDate.split("-");
  22.  
  23.   const startYear = Number(startDateSplit[2]);
  24.   const endYear = Number(endDateSplit[2]);
  25.   const startMonth = Number(startDateSplit[1]) - 1;
  26.   const endMonth = Number(endDateSplit[1]) - 1;
  27.  
  28.   /* MAIN VARIABLE */
  29.   let rangeMonthInAYear = [];
  30.   let monthRange = [];
  31.   let dateBar = [];
  32.  
  33.   /* CHECK IF IS LEAP YEAR */
  34.   const leapYear = (year) => {
  35.     if (Number(year) % 4 === 0) {
  36.       if (Number(year) % 100 === 0) {
  37.         if (Number(year) % 400 === 0) {
  38.           return true;
  39.         } else {
  40.           return false;
  41.         }
  42.       } else {
  43.         return true;
  44.       }
  45.     } else {
  46.       return false;
  47.     }
  48.   };
  49.  
  50.   /* GENERATE DATE BAR */
  51.   const generateDateBar = (dateStart, dateEnd, month, year) => {
  52.     for (let i = dateStart; i <= dateEnd; i++) {
  53.       const dateVar = `${i < 10 ? `0${i}` : i}/${
  54.         month < 10 ? `0${month}` : month
  55.       }/${year}`;
  56.       dateBar.push(dateVar);
  57.     }
  58.   };
  59.  
  60.   /* COMPLICATED LOGIC */
  61.   // Generate rangeMonthInAYear
  62.   if (startYear === endYear) {
  63.     rangeMonthInAYear.push(endMonth - startMonth);
  64.   } else {
  65.     for (let i = startYear; i <= endYear; i++) {
  66.       if (startYear === i) {
  67.         rangeMonthInAYear.push(11 - startMonth);
  68.       } else if (endYear === i) {
  69.         rangeMonthInAYear.push(0 + endMonth);
  70.       } else {
  71.         rangeMonthInAYear.push(11);
  72.       }
  73.     }
  74.   }
  75.  
  76.   // Generate monthRange
  77.   for (let i = 0; i < rangeMonthInAYear.length; i++) {
  78.     for (let j = 0; j <= rangeMonthInAYear[i]; j++) {
  79.       if (rangeMonthInAYear.length !== 1) {
  80.         if (i === rangeMonthInAYear.length - 1) {
  81.           monthRange.push(0 + j);
  82.         } else {
  83.           monthRange.push(11 - rangeMonthInAYear[i] + j);
  84.         }
  85.       } else {
  86.         monthRange.push(startMonth + j);
  87.       }
  88.     }
  89.   }
  90.  
  91.   // Generate Date
  92.   let yearGenerateDate = startYear;
  93.   for (let i = 0; i < monthRange.length; i++) {
  94.     if (monthRange[i] === 0) yearGenerateDate++;
  95.  
  96.     if (monthRange[i] === 1) {
  97.       if (leapYear(yearGenerateDate)) {
  98.         generateDateBar(1, 29, monthRange[i] + 1, yearGenerateDate);
  99.       } else {
  100.         generateDateBar(1, 28, monthRange[i] + 1, yearGenerateDate);
  101.       }
  102.     } else {
  103.       if (
  104.         monthRange[i] === 0 ||
  105.         monthRange[i] === 2 ||
  106.         monthRange[i] === 4 ||
  107.         monthRange[i] === 6 ||
  108.         monthRange[i] === 7 ||
  109.         monthRange[i] === 9 ||
  110.         monthRange[i] === 11
  111.       ) {
  112.         generateDateBar(1, 31, monthRange[i] + 1, yearGenerateDate);
  113.       } else {
  114.         generateDateBar(1, 30, monthRange[i] + 1, yearGenerateDate);
  115.       }
  116.     }
  117.   }
  118.  
  119.   // console.log(rangeMonthInAYear);
  120.   // console.log(monthRange)
  121.  
  122.   return dateBar;
  123. };
  124.  
  125. const result = getRangeMonth(startDate, endDate);
  126. console.log(result);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement