-
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.
// 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) | |
}) |
Thanks for the code.
Please provide code for getting hours in between two dates with JavaScript.
Example
let date1 = new Date(1582545600000) // 24th Feb 17:30
let date2 = new Date(1582574400000) // 25th Feb 01:30
getHourWiseDates(date1, date2);
Output
[ { start_hour: 1582545600000 // 24th Feb 17:30 end_hour: 1582547399099 // 24th Feb 17:59 }, { start_hour: 1582547400000 // 24th Feb 18:00 end_hour: 1582550999099 // 24th Feb 18:59 } ... ... ... { start_hour: 1582572600000 //25th Feb 01:00 end_hour: 1582574400000 // 25th Feb 01:30 } ]
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
I tried this and it was returned wrong
getDates(new Date(2019,12,22), new Date(2020,1,7));