Kalenderanzeige-Fehler

Ich glaube, ich habe ein Problem mit der Anzeige im Kalender

Im Oktober habe ich zweimal den 25. an einem Sonntag und Montag.

In der Wochenansicht geht der Tag von 22 Uhr bis 21 Uhr

Gleiches gilt für die Tagesansicht

Haben andere diese Probleme auch bemerkt?

Hallo,

Ich habe tatsächlich die gleichen Fehler und nicht nur im Oktober :sweat_smile:


Bug im März 2027, bei dem die grauen Tage am Monatsende nicht korrekt sind.

Ich werde also einen PR erstellen, um all diese Punkte zu beheben.

Ich habe diesen Bug untersucht und festgestellt, dass es tatsächlich drei verschiedene Symptome gibt, die eine gemeinsame Ursache haben.

Die Ursache

Das Frontend verwendet dayjs für alle Datumsberechnungen. Eine Box des Dashboards (EDF Tempo) lud das Timezone-Plugin von dayjs, um die Pariser Zeit zu lesen.

Das Problem: dayjs.extend() ändert dayjs global für die gesamte Anwendung. Und die Kalenderbibliothek (react-big-calendar) enthält diesen Test:

// wenn das Timezone-Plugin geladen ist, dann die timezone-aware-Version verwenden
const dayjs = dayjsLib.tz ? dayjsLib.tz : dayjsLib;

Sobald das Plugin vorhanden ist, wechselt der Kalender alle Berechnungen zu dayjs.tz, das sich anders verhält:

  • es interpretiert bestimmte Daten als UTC → das Zeitraster verschiebt sich um 2 Stunden
  • add(1, ‹ Tag ›) fügt 24 Stunden absolut hinzu, aber der Tag des Wechsels zur Winterzeit dauert 25 Stunden → man landet um 23 Uhr am selben Tag, daher wird das Datum zweimal angezeigt
  • startOf(‹ Monat ›) verschiebt sich um eine Stunde, was den Monatsvergleich verfälscht → das Grau wird invertiert

Wichtiger Punkt: Diese Box wurde statisch mit allen anderen importiert, daher wurde das Plugin geladen, selbst wenn Sie EDF Tempo nie verwendet haben.

Der Fix

Statt den Kalender zu flicken, habe ich die Ursache beseitigt: Die EDF-Tempo-Box verwendet jetzt Intl.DateTimeFormat (nativ, ohne Nebenwirkungen), um die Pariser Zeit zu lesen. Das Geschäftsverhalten ist identisch — die vollen/halben Stunden bleiben in französischer Zeit definiert, unabhängig von Ihrer Zeitzone.

Es gibt noch einen Fix im Kalender für einen von diesem unabhängigen Bug: Der Tag des Zeitwechsels zeigte 26 Stundenzeilen im Oktober und 22 im März statt 24, und die Ereignisse waren falsch positioniert (ein Termin um 14 Uhr wurde um 13:26 Uhr angezeigt).

Der PR: