mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-05-07 14:57:12 -04:00
parent
cfa2502201
commit
3d4ee138ad
3 changed files with 58 additions and 7 deletions
|
@ -65,6 +65,17 @@ describe('days-calculator', () => {
|
||||||
type: 'public',
|
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 date1 = new Date('2024-08-01T07:21:46Z');
|
||||||
const date2 = new Date('2024-08-31T17:21:46Z');
|
const date2 = new Date('2024-08-31T17:21:46Z');
|
||||||
|
@ -88,8 +99,8 @@ describe('days-calculator', () => {
|
||||||
businessSecondsFormatted: '11d 5h 38m 14s',
|
businessSecondsFormatted: '11d 5h 38m 14s',
|
||||||
differenceFormatted: '29d 10h',
|
differenceFormatted: '29d 10h',
|
||||||
differenceSeconds: 2541600,
|
differenceSeconds: 2541600,
|
||||||
|
...totalDiff1,
|
||||||
totalDifferenceFormatted: '30d 10h',
|
totalDifferenceFormatted: '30d 10h',
|
||||||
totalDifferenceSeconds: 2628000,
|
|
||||||
holidays,
|
holidays,
|
||||||
...daysInfos,
|
...daysInfos,
|
||||||
});
|
});
|
||||||
|
@ -112,8 +123,16 @@ describe('days-calculator', () => {
|
||||||
businessSecondsFormatted: '10d 20h 38m 14.9s',
|
businessSecondsFormatted: '10d 20h 38m 14.9s',
|
||||||
differenceFormatted: '28d 16h 38m 13.9s',
|
differenceFormatted: '28d 16h 38m 13.9s',
|
||||||
differenceSeconds: 2479093.999,
|
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',
|
totalDifferenceFormatted: '29d 16h 38m 13.9s',
|
||||||
totalDifferenceSeconds: 2565493.999,
|
|
||||||
holidays,
|
holidays,
|
||||||
...daysInfos,
|
...daysInfos,
|
||||||
saturdays: [
|
saturdays: [
|
||||||
|
@ -142,8 +161,8 @@ describe('days-calculator', () => {
|
||||||
businessSecondsFormatted: '8d 5h 38m 14s',
|
businessSecondsFormatted: '8d 5h 38m 14s',
|
||||||
differenceFormatted: '21d 14h 38m 14s',
|
differenceFormatted: '21d 14h 38m 14s',
|
||||||
differenceSeconds: 1867094,
|
differenceSeconds: 1867094,
|
||||||
|
...totalDiff1,
|
||||||
totalDifferenceFormatted: '30d 10h',
|
totalDifferenceFormatted: '30d 10h',
|
||||||
totalDifferenceSeconds: 2628000,
|
|
||||||
holidays,
|
holidays,
|
||||||
...daysInfos,
|
...daysInfos,
|
||||||
});
|
});
|
||||||
|
@ -167,7 +186,7 @@ describe('days-calculator', () => {
|
||||||
differenceFormatted: '4d',
|
differenceFormatted: '4d',
|
||||||
differenceSeconds: 345600,
|
differenceSeconds: 345600,
|
||||||
totalDifferenceFormatted: '30d 10h',
|
totalDifferenceFormatted: '30d 10h',
|
||||||
totalDifferenceSeconds: 2628000,
|
...totalDiff1,
|
||||||
holidays,
|
holidays,
|
||||||
...daysInfos,
|
...daysInfos,
|
||||||
});
|
});
|
||||||
|
|
|
@ -7,7 +7,15 @@ import { BusinessTime, type Holiday } from './business-time-calculator';
|
||||||
interface DateTimeRange {
|
interface DateTimeRange {
|
||||||
startDate: Date
|
startDate: Date
|
||||||
endDate: Date
|
endDate: Date
|
||||||
totalDifferenceSeconds: number
|
totalDifference: {
|
||||||
|
years: number
|
||||||
|
months: number
|
||||||
|
weeks: number
|
||||||
|
days: number
|
||||||
|
hours: number
|
||||||
|
minutes: number
|
||||||
|
seconds: number
|
||||||
|
}
|
||||||
totalDifferenceFormatted: string
|
totalDifferenceFormatted: string
|
||||||
differenceSeconds: number
|
differenceSeconds: number
|
||||||
differenceFormatted: string
|
differenceFormatted: string
|
||||||
|
@ -96,6 +104,12 @@ export function diffDateTimes({
|
||||||
const startEnd = { start: startDateTime, end: endDateTime };
|
const startEnd = { start: startDateTime, end: endDateTime };
|
||||||
|
|
||||||
const totalDifferenceSeconds = endDateTime.diff(startDateTime, 'seconds').toObject().seconds || 0;
|
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 differenceSeconds = differenceTimeComputer.computeBusinessSecondsInInterval(startEnd);
|
||||||
const businessSeconds = businessTimeComputer.computeBusinessSecondsInInterval(startEnd);
|
const businessSeconds = businessTimeComputer.computeBusinessSecondsInInterval(startEnd);
|
||||||
const weekDaysDates = datesByDays(startDateTime, endDateTime);
|
const weekDaysDates = datesByDays(startDateTime, endDateTime);
|
||||||
|
@ -103,7 +117,15 @@ export function diffDateTimes({
|
||||||
return {
|
return {
|
||||||
startDate: startDateTime.toJSDate(),
|
startDate: startDateTime.toJSDate(),
|
||||||
endDate: endDateTime.toJSDate(),
|
endDate: endDateTime.toJSDate(),
|
||||||
totalDifferenceSeconds,
|
totalDifference: {
|
||||||
|
years: totalDifferenceYears,
|
||||||
|
months: totalDifferenceMonths,
|
||||||
|
weeks: totalDifferenceWeeks,
|
||||||
|
days: totalDifferenceDays,
|
||||||
|
hours: totalDifferenceHours,
|
||||||
|
minutes: totalDifferenceMinutes,
|
||||||
|
seconds: totalDifferenceSeconds,
|
||||||
|
},
|
||||||
totalDifferenceFormatted: prettyMilliseconds(totalDifferenceSeconds * 1000),
|
totalDifferenceFormatted: prettyMilliseconds(totalDifferenceSeconds * 1000),
|
||||||
differenceSeconds,
|
differenceSeconds,
|
||||||
differenceFormatted: prettyMilliseconds(differenceSeconds * 1000),
|
differenceFormatted: prettyMilliseconds(differenceSeconds * 1000),
|
||||||
|
|
|
@ -146,14 +146,23 @@ const inputProps = {
|
||||||
<input-copyable v-bind="inputProps" label="End Date" :value="resultDaysDiff.endDate" />
|
<input-copyable v-bind="inputProps" label="End Date" :value="resultDaysDiff.endDate" />
|
||||||
<input-copyable v-bind="inputProps" label="End Date (ISO)" :value="resultDaysDiff.endDate.toISOString()" />
|
<input-copyable v-bind="inputProps" label="End Date (ISO)" :value="resultDaysDiff.endDate.toISOString()" />
|
||||||
<n-divider />
|
<n-divider />
|
||||||
<input-copyable v-bind="inputProps" label="Total Difference Seconds" :value="resultDaysDiff.totalDifferenceSeconds" />
|
<input-copyable v-bind="inputProps" label="Total Difference Seconds" :value="resultDaysDiff.totalDifference.seconds" />
|
||||||
|
<input-copyable v-bind="inputProps" label="Total Difference Minutes" :value="resultDaysDiff.totalDifference.minutes" />
|
||||||
|
<input-copyable v-bind="inputProps" label="Total Difference Hours" :value="resultDaysDiff.totalDifference.hours" />
|
||||||
|
<input-copyable v-bind="inputProps" label="Total Difference Days" :value="resultDaysDiff.totalDifference.days" />
|
||||||
|
<input-copyable v-bind="inputProps" label="Total Difference Weeks" :value="resultDaysDiff.totalDifference.weeks" />
|
||||||
|
<input-copyable v-bind="inputProps" label="Total Difference Months" :value="resultDaysDiff.totalDifference.months" />
|
||||||
|
<input-copyable v-bind="inputProps" label="Total Difference Years" :value="resultDaysDiff.totalDifference.years" />
|
||||||
<input-copyable v-bind="inputProps" label="Total Difference" :value="resultDaysDiff.totalDifferenceFormatted" />
|
<input-copyable v-bind="inputProps" label="Total Difference" :value="resultDaysDiff.totalDifferenceFormatted" />
|
||||||
|
<n-divider />
|
||||||
<input-copyable v-bind="inputProps" label="Difference Seconds" :value="resultDaysDiff.differenceSeconds" />
|
<input-copyable v-bind="inputProps" label="Difference Seconds" :value="resultDaysDiff.differenceSeconds" />
|
||||||
<input-copyable v-bind="inputProps" label="Difference " :value="resultDaysDiff.differenceFormatted" />
|
<input-copyable v-bind="inputProps" label="Difference " :value="resultDaysDiff.differenceFormatted" />
|
||||||
|
<n-divider />
|
||||||
<input-copyable v-bind="inputProps" label="Business Seconds" :value="resultDaysDiff.businessSeconds" />
|
<input-copyable v-bind="inputProps" label="Business Seconds" :value="resultDaysDiff.businessSeconds" />
|
||||||
<input-copyable v-bind="inputProps" label="Business Time" :value="resultDaysDiff.businessSecondsFormatted" />
|
<input-copyable v-bind="inputProps" label="Business Time" :value="resultDaysDiff.businessSecondsFormatted" />
|
||||||
<input-copyable v-bind="inputProps" label="Business Hours" :value="resultDaysDiff.businessHours" />
|
<input-copyable v-bind="inputProps" label="Business Hours" :value="resultDaysDiff.businessHours" />
|
||||||
<input-copyable v-bind="inputProps" label="Business Days" :value="resultDaysDiff.businessDays" />
|
<input-copyable v-bind="inputProps" label="Business Days" :value="resultDaysDiff.businessDays" />
|
||||||
|
<n-divider />
|
||||||
<input-copyable v-bind="inputProps" placeholder="None" label="Mondays" :value="resultDaysDiff.mondays" />
|
<input-copyable v-bind="inputProps" placeholder="None" label="Mondays" :value="resultDaysDiff.mondays" />
|
||||||
<input-copyable v-bind="inputProps" placeholder="None" label="Tuesdays" :value="resultDaysDiff.tuesdays" />
|
<input-copyable v-bind="inputProps" placeholder="None" label="Tuesdays" :value="resultDaysDiff.tuesdays" />
|
||||||
<input-copyable v-bind="inputProps" placeholder="None" label="Wednesdays" :value="resultDaysDiff.wednesdays" />
|
<input-copyable v-bind="inputProps" placeholder="None" label="Wednesdays" :value="resultDaysDiff.wednesdays" />
|
||||||
|
@ -161,6 +170,7 @@ const inputProps = {
|
||||||
<input-copyable v-bind="inputProps" placeholder="None" label="Fridays" :value="resultDaysDiff.fridays" />
|
<input-copyable v-bind="inputProps" placeholder="None" label="Fridays" :value="resultDaysDiff.fridays" />
|
||||||
<input-copyable v-bind="inputProps" placeholder="None" label="Saturdays" :value="resultDaysDiff.saturdays" />
|
<input-copyable v-bind="inputProps" placeholder="None" label="Saturdays" :value="resultDaysDiff.saturdays" />
|
||||||
<input-copyable v-bind="inputProps" placeholder="None" label="Sundays" :value="resultDaysDiff.sundays" />
|
<input-copyable v-bind="inputProps" placeholder="None" label="Sundays" :value="resultDaysDiff.sundays" />
|
||||||
|
<n-divider />
|
||||||
<input-copyable v-bind="inputProps" label="Weekend Days" :value="resultDaysDiff.weekendDays" />
|
<input-copyable v-bind="inputProps" label="Weekend Days" :value="resultDaysDiff.weekendDays" />
|
||||||
<input-copyable v-bind="inputProps" label="Full Weekends" :value="resultDaysDiff.weekends" />
|
<input-copyable v-bind="inputProps" label="Full Weekends" :value="resultDaysDiff.weekends" />
|
||||||
<c-card v-if="resultDaysDiff.holidays?.length" title="Holidays in period">
|
<c-card v-if="resultDaysDiff.holidays?.length" title="Holidays in period">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue