Last active
May 22, 2025 04:15
-
Star
(108)
You must be signed in to star a gist -
Fork
(26)
You must be signed in to fork a gist
-
-
Save miguelmota/7905510 to your computer and use it in GitHub Desktop.
Get dates in between two dates with JavaScript.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Returns an array of dates between the two dates | |
function getDates (startDate, endDate) { | |
const dates = [] | |
let currentDate = startDate | |
const addDays = function (days) { | |
const date = new Date(this.valueOf()) | |
date.setDate(date.getDate() + days) | |
return date | |
} | |
while (currentDate <= endDate) { | |
dates.push(currentDate) | |
currentDate = addDays.call(currentDate, 1) | |
} | |
return dates | |
} | |
// Usage | |
const dates = getDates(new Date(2013, 10, 22), new Date(2013, 11, 25)) | |
dates.forEach(function (date) { | |
console.log(date) | |
}) |
Using dayjs
and accepting any of the dayjs
supported types (from millisecond to year), in typescript and returning either Date
s or number
s (unix timestamps in milliseconds)
export function dateRange(
start: Date | number,
end: Date | number,
interval: "millisecond" | "second" | "minute" | "hour" | "day" | "week" | "month" | "year",
asUnixTimestampsMS = false,
): (number | Date)[] {
const startDate = dayjs(start);
const endDate = dayjs(end);
const diffInUnits = endDate.diff(startDate, interval)
return Array.from(Array(diffInUnits + 1).keys()).map((i) => {
return asUnixTimestampsMS ? startDate.add(i, interval).valueOf() : startDate.add(i, interval).toDate()
});
}
I'm selected dates
24-01-2022
25-01-2022
but I get
Thu Feb 24 2022 00:00:00 GMT+0530 (India Standard Time)
Fri Feb 25 2022 00:00:00 GMT+0530 (India Standard Time)
and my code
var dests = getDates(new Date(des[2],des[1],des[0]), new Date(des1[2],des1[1],des1[0]));
dests.forEach(function(date) {
console.log(dests);
});
how to fix it?
Perfectly.. Thanks u bro
This for Get range dates, work for me
var start = '24-01-2022';
var end = '26-01-2022';
var dates = getDates(new Date(start), new Date(end));
// dates.forEach(function(date) {
// console.log(date);
// });
// Get Range Dates
console.log(dates.length);
Life saver. Thank you @miguelmota.
I would convert it to TypeScript version.
const getDates = (startDate: Date, endDate: Date) => {
const dates = []
let currentDate = startDate
const addDays = (currentDate: Date, days: number) => {
const date = new Date(currentDate)
date.setDate(date.getDate() + days)
return date
}
while (currentDate <= endDate) {
dates.push(currentDate)
currentDate = addDays(currentDate, 1)
}
return dates
}
I would convert it to TypeScript version.
const getDates = (startDate: Date, endDate: Date) => { const dates = [] let currentDate = startDate const addDays = (currentDate: Date, days: number) => { const date = new Date(currentDate) date.setDate(date.getDate() + days) return date } while (currentDate <= endDate) { dates.push(currentDate) currentDate = addDays(currentDate, 1) } return dates }
Thank you
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
i want this type of array like shortmonths name and years starting date is Sep 2017 to current months and year