diff --git a/packages/vuetify/src/components/VDatePicker/VDatePickerMonth.tsx b/packages/vuetify/src/components/VDatePicker/VDatePickerMonth.tsx index 41d0e29fa81..03c31f44a2c 100644 --- a/packages/vuetify/src/components/VDatePicker/VDatePickerMonth.tsx +++ b/packages/vuetify/src/components/VDatePicker/VDatePickerMonth.tsx @@ -79,7 +79,7 @@ export const VDatePickerMonth = genericComponent()({ rangeStop.value = _value } - const diff = adapter.getDiff(rangeStop.value, rangeStart.value) + const diff = adapter.getDiff(rangeStop.value, rangeStart.value, 'days') const datesInRange = [rangeStart.value] for (let i = 1; i < diff; i++) { diff --git a/packages/vuetify/src/composables/date/adapters/vuetify.ts b/packages/vuetify/src/composables/date/adapters/vuetify.ts index 6c02f13defa..8dd97f14a99 100644 --- a/packages/vuetify/src/composables/date/adapters/vuetify.ts +++ b/packages/vuetify/src/composables/date/adapters/vuetify.ts @@ -431,11 +431,27 @@ function getDiff (date: Date, comparing: Date | string, unit?: string) { const d = new Date(date) const c = new Date(comparing) - if (unit === 'month') { - return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12 + switch (unit) { + case 'years': + return d.getFullYear() - c.getFullYear() + case 'quarters': + return Math.floor((d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12) / 4) + case 'months': + return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12 + case 'weeks': + return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24 * 7)) + case 'days': + return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24)) + case 'hours': + return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60)) + case 'minutes': + return Math.floor((d.getTime() - c.getTime()) / (1000 * 60)) + case 'seconds': + return Math.floor((d.getTime() - c.getTime()) / 1000) + default: { + return d.getTime() - c.getTime() + } } - - return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24)) } function setHours (date: Date, count: number) {