diff --git a/src/tools/days-calculator/days-calculator.service.test.ts b/src/tools/days-calculator/days-calculator.service.test.ts index c2c2482e8..3c1e5d595 100644 --- a/src/tools/days-calculator/days-calculator.service.test.ts +++ b/src/tools/days-calculator/days-calculator.service.test.ts @@ -65,6 +65,17 @@ describe('days-calculator', () => { type: 'public', }, ]; + const totalDiff1 = { + totalDifference: { + days: 30.416666666666668, + hours: 730, + minutes: 43800, + months: 0.9811827956989247, + seconds: 2628000, + weeks: 4.345238095238095, + years: 0.08333333333333333, + }, + }; const date1 = new Date('2024-08-01T07:21:46Z'); const date2 = new Date('2024-08-31T17:21:46Z'); @@ -88,8 +99,8 @@ describe('days-calculator', () => { businessSecondsFormatted: '11d 5h 38m 14s', differenceFormatted: '29d 10h', differenceSeconds: 2541600, + ...totalDiff1, totalDifferenceFormatted: '30d 10h', - totalDifferenceSeconds: 2628000, holidays, ...daysInfos, }); @@ -112,8 +123,16 @@ describe('days-calculator', () => { businessSecondsFormatted: '10d 20h 38m 14.9s', differenceFormatted: '28d 16h 38m 13.9s', differenceSeconds: 2479093.999, + totalDifference: { + days: 29.69321758101852, + hours: 712.6372219444445, + minutes: 42758.233316666665, + months: 0.9578457284199522, + seconds: 2565493.999, + weeks: 4.241888225859788, + years: 0.08135128104388635, + }, totalDifferenceFormatted: '29d 16h 38m 13.9s', - totalDifferenceSeconds: 2565493.999, holidays, ...daysInfos, saturdays: [ @@ -142,8 +161,8 @@ describe('days-calculator', () => { businessSecondsFormatted: '8d 5h 38m 14s', differenceFormatted: '21d 14h 38m 14s', differenceSeconds: 1867094, + ...totalDiff1, totalDifferenceFormatted: '30d 10h', - totalDifferenceSeconds: 2628000, holidays, ...daysInfos, }); @@ -167,7 +186,7 @@ describe('days-calculator', () => { differenceFormatted: '4d', differenceSeconds: 345600, totalDifferenceFormatted: '30d 10h', - totalDifferenceSeconds: 2628000, + ...totalDiff1, holidays, ...daysInfos, }); diff --git a/src/tools/days-calculator/days-calculator.service.ts b/src/tools/days-calculator/days-calculator.service.ts index afdbf54a6..20fc101dd 100644 --- a/src/tools/days-calculator/days-calculator.service.ts +++ b/src/tools/days-calculator/days-calculator.service.ts @@ -7,7 +7,15 @@ import { BusinessTime, type Holiday } from './business-time-calculator'; interface DateTimeRange { startDate: Date endDate: Date - totalDifferenceSeconds: number + totalDifference: { + years: number + months: number + weeks: number + days: number + hours: number + minutes: number + seconds: number + } totalDifferenceFormatted: string differenceSeconds: number differenceFormatted: string @@ -96,6 +104,12 @@ export function diffDateTimes({ const startEnd = { start: startDateTime, end: endDateTime }; const totalDifferenceSeconds = endDateTime.diff(startDateTime, 'seconds').toObject().seconds || 0; + const totalDifferenceMinutes = endDateTime.diff(startDateTime, 'minutes').toObject().minutes || 0; + const totalDifferenceHours = endDateTime.diff(startDateTime, 'hours').toObject().hours || 0; + const totalDifferenceDays = endDateTime.diff(startDateTime, 'days').toObject().days || 0; + const totalDifferenceWeeks = endDateTime.diff(startDateTime, 'weeks').toObject().weeks || 0; + const totalDifferenceMonths = endDateTime.diff(startDateTime, 'months').toObject().months || 0; + const totalDifferenceYears = endDateTime.diff(startDateTime, 'years').toObject().years || 0; const differenceSeconds = differenceTimeComputer.computeBusinessSecondsInInterval(startEnd); const businessSeconds = businessTimeComputer.computeBusinessSecondsInInterval(startEnd); const weekDaysDates = datesByDays(startDateTime, endDateTime); @@ -103,7 +117,15 @@ export function diffDateTimes({ return { startDate: startDateTime.toJSDate(), endDate: endDateTime.toJSDate(), - totalDifferenceSeconds, + totalDifference: { + years: totalDifferenceYears, + months: totalDifferenceMonths, + weeks: totalDifferenceWeeks, + days: totalDifferenceDays, + hours: totalDifferenceHours, + minutes: totalDifferenceMinutes, + seconds: totalDifferenceSeconds, + }, totalDifferenceFormatted: prettyMilliseconds(totalDifferenceSeconds * 1000), differenceSeconds, differenceFormatted: prettyMilliseconds(differenceSeconds * 1000), diff --git a/src/tools/days-calculator/days-calculator.vue b/src/tools/days-calculator/days-calculator.vue index 73ef88880..54d5cfab5 100644 --- a/src/tools/days-calculator/days-calculator.vue +++ b/src/tools/days-calculator/days-calculator.vue @@ -146,14 +146,23 @@ const inputProps = { - + + + + + + + + + + @@ -161,6 +170,7 @@ const inputProps = { +