fix(notdienst): resolve timezone offset mismatch in plan generation and fix linter warning in calendar modal
This commit is contained in:
+19
-13
@@ -1,13 +1,8 @@
|
||||
import {
|
||||
addMonths,
|
||||
endOfMonth,
|
||||
getDate,
|
||||
getYear,
|
||||
getMonth,
|
||||
isWeekend,
|
||||
eachDayOfInterval,
|
||||
startOfMonth,
|
||||
startOfDay,
|
||||
format,
|
||||
} from "date-fns";
|
||||
import { de } from "date-fns/locale";
|
||||
@@ -36,17 +31,28 @@ export function getTargetMonthData(now = new Date()) {
|
||||
}
|
||||
|
||||
export function getWorkingDaysOfMonth(year: number, month: number) {
|
||||
// month ist 1-12, Date erwartet 0-11
|
||||
const start = startOfMonth(new Date(year, month - 1));
|
||||
const end = endOfMonth(start);
|
||||
const start = new Date(Date.UTC(year, month - 1, 1));
|
||||
const end = new Date(Date.UTC(year, month, 0)); // last day of month
|
||||
|
||||
const days = eachDayOfInterval({ start, end });
|
||||
|
||||
return days
|
||||
.filter((day) => !isWeekend(day))
|
||||
.map((day) => startOfDay(day));
|
||||
const days: Date[] = [];
|
||||
const current = new Date(start);
|
||||
while (current <= end) {
|
||||
const dayOfWeek = current.getUTCDay(); // 0 is Sunday, 6 is Saturday
|
||||
if (dayOfWeek !== 0 && dayOfWeek !== 6) {
|
||||
days.push(new Date(current));
|
||||
}
|
||||
current.setUTCDate(current.getUTCDate() + 1);
|
||||
}
|
||||
return days;
|
||||
}
|
||||
|
||||
export function formatDateKey(date: Date) {
|
||||
return format(date, "yyyy-MM-dd");
|
||||
}
|
||||
|
||||
export function formatUtcDateKey(date: Date) {
|
||||
const yyyy = date.getUTCFullYear();
|
||||
const mm = String(date.getUTCMonth() + 1).padStart(2, "0");
|
||||
const dd = String(date.getUTCDate()).padStart(2, "0");
|
||||
return `${yyyy}-${mm}-${dd}`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user