The function returns amount of minutes, hours, weeks, months, years or the day of the week whichever is closer to the date provided, i.e it will return 1 Month instead of 4 weeks, 1 year instead of 365 days
Function input is date(YYYY-MM-DD) and Time(HH:MM).
Function gets current date(no need to input)
Function set Tag to plural form
Ex: 1 Month, 10 Months
Date Today: 2021-12-18 @ 14:00
Examples:
calculateAmountOfTime('2021-02-11','07:00')
output: 10 Months
Now let's take a date which is 5 days from the current date
calculateAmountOfTime('2021-12-13','07:00')
output: Monday
calculateAmountOfTime('2021-12-18','11:00')
output : 3 Hours
Here's the code:
function calculateAmountOfTime(date, time) {
let dateArr = date.split("-")
let timeArr = time.split(":")
let days = [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
]
let dateProvided = new Date(
dateArr[0],
dateArr[1] - 1,
dateArr[2],
timeArr[0],
timeArr[1]
)
let dateNow = new Date()
let dateDifference = dateNow - dateProvided
let dateDifferenceInMinutes = dateDifference / (1000 * 60)
let dateDifferenceInHours = dateDifference / (1000 * 60 * 60)
let dateDifferenceInDays = dateDifference / (1000 * 60 * 60 * 24)
let dateDifferenceInWeeks = dateDifference / (1000 * 60 * 60 * 24 * 7)
let dateDifferenceInMonths = dateDifference / (1000 * 60 * 60 * 24 * 30)
let dateDifferenceInYears = dateDifference / (1000 * 60 * 60 * 24 * 365)
dateDifferenceInHours = parseInt(dateDifferenceInHours)
dateDifferenceInMinutes = parseInt(dateDifferenceInMinutes)
dateDifferenceInDays = parseInt(dateDifferenceInDays)
dateDifferenceInWeeks = parseInt(dateDifferenceInWeeks)
dateDifferenceInMonths = parseInt(dateDifferenceInMonths)
dateDifferenceInYears = parseInt(dateDifferenceInYears)
if (dateDifferenceInYears > 0) {
let tag = " Year"
dateDifferenceInYears > 1 ? (tag = tag + "s") : (tag = tag)
return dateDifferenceInYears + tag
} else if (dateDifferenceInMonths > 0) {
let tag = " Month"
dateDifferenceInMonths > 1 ? (tag = tag + "s") : (tag = tag)
return dateDifferenceInMonths + tag
} else if (dateDifferenceInWeeks > 0) {
let tag = " Week"
dateDifferenceInWeeks > 1 ? (tag = tag + "s") : (tag = tag)
return dateDifferenceInWeeks + tag
} else if (dateDifferenceInDays > 0) {
let tag = " Day"
dateDifferenceInDays > 1 ? (tag = tag + "s") : (tag = tag)
return days[dateProvided.getDay()]
} else if (dateDifferenceInHours > 0) {
let tag = " Hour"
dateDifferenceInHours > 1 ? (tag = tag + "s") : (tag = tag)
return dateDifferenceInHours + tag
} else if (dateDifferenceInMinutes > 0) {
let tag = " Minute"
dateDifferenceInMinutes > 1 ? (tag = tag + "s") : (tag = tag)
return dateDifferenceInMinutes + tag
} else {
return " 1 second"
}
}
Top comments (0)