export function getHoursBetween(startHourStr, endHourStr) {
  const startHour = new Date(startHourStr)
  let endHour = new Date(endHourStr)
  let nowDate = new Date()
  nowDate.setHours(nowDate.getHours() - 1);
  if (endHour.getTime() > nowDate.getTime()) {
    endHour = nowDate
  }
  const hours = []
  while (startHour <= endHour) {
    const hourString = `${startHour.getFullYear()}-${String(startHour.getMonth() + 1).padStart(2, '0')}-${String(startHour.getDate()).padStart(2, '0')} ${String(startHour.getHours()).padStart(2, '0')}:00:00`
    hours.push(hourString)
    startHour.setTime(startHour.getTime() + 60 * 60 * 1000)
  }
  // return hours;
  return hours.sort((a, b) => new Date(b) - new Date(a))
}

export function getDatesBetween(startDateStr, endDateStr) {
  const startDate = new Date(startDateStr)
  let endDate = new Date(endDateStr)
  let nowDate = new Date()
  nowDate.setHours(nowDate.getHours() - 1);
  if (endDate.getTime() > nowDate.getTime()) {
    endDate = nowDate
  }
  const dates = []
  while (startDate <= endDate) {
    dates.push(`${startDate.getFullYear()}-${String(startDate.getMonth() + 1).padStart(2, '0')}-${String(startDate.getDate()).padStart(2, '0')}`)
    startDate.setDate(startDate.getDate() + 1)
  }
  // return dates;
  return dates.sort((a, b) => new Date(b) - new Date(a))
}

export function getMonthsBetween(startMonthStr, endMonthStr) {
  const result = []
  const startDate = new Date(startMonthStr + '-01')
  let endDate = new Date(endMonthStr + '-01')
  const currentDate = new Date(startDate)
  let nowDate = new Date()
  nowDate.setHours(nowDate.getHours() - 1);
  if (endDate.getTime() > nowDate.getTime()) {
    endDate = nowDate
  }
  while (currentDate <= endDate) {
    const year = currentDate.getFullYear()
    const month = String(currentDate.getMonth() + 1).padStart(2, '0')
    result.push(`${year}-${month}`)
    currentDate.setMonth(currentDate.getMonth() + 1)
  }
  return result.sort((a, b) => new Date(b) - new Date(a))
}

export function getYearsBetween(startYearStr, endYearStr) {
  const result = []
  const startYear = Number(startYearStr.substring(0, 4))
  const endYear = Number(endYearStr.substring(0, 4))
  for (let i = startYear; i <= endYear; i++) {
    result.push(`${i}`)
  }
  return result.sort((a, b) => new Date(b) - new Date(a))
}
