NEWS
KW/Jahr in Monat/Jahr umwandeln
-
Moin,
ich würde gerne eine Kalenderwoche z.B. KW 34 im Jahr 2024 umrechnen nach Monat/Jahr.
In diesem Fall wäre August/2024 richtig. Müsste doch mit java gehen, oder? -
@stenmic gibts da nicht vielleicht eine fertig bibliothek
-
Laut ChatCPT
// ioBroker Skript: KW → Monat/Jahr // Quelle: 0_userdata.0.kalender.kw + 0_userdata.0.kalender.jahr // Ziel: 0_userdata.0.kalender.monat_jahr schedule('* * * * *', function() { // wird minütlich aktualisiert (kannst du anpassen) const kw = getState('0_userdata.0.kalender.kw').val; const jahr = getState('0_userdata.0.kalender.jahr').val; const result = getMonthFromWeek(kw, jahr); setState('0_userdata.0.kalender.monat_jahr', result, true); }); function getMonthFromWeek(kw, jahr) { const simple = new Date(jahr, 0, 1 + (kw - 1) * 7); const dayOfWeek = simple.getDay(); const ISOWeekStart = new Date(simple); if (dayOfWeek <= 4) { ISOWeekStart.setDate(simple.getDate() - dayOfWeek + 1); } else { ISOWeekStart.setDate(simple.getDate() + 8 - dayOfWeek); } const monatName = ISOWeekStart.toLocaleString('de-DE', { month: 'long' }); const jahrZahl = ISOWeekStart.getFullYear(); return `${monatName} ${jahrZahl}`; }Oder was leichter mit date-fns (muss dann bei den npm Modulen eingetragen werden)
import { startOfISOWeek, addWeeks, format } from 'date-fns'; import { de } from 'date-fns/locale'; // ioBroker Skript schedule('* * * * *', function() { const kw = getState('0_userdata.0.kalender.kw').val; const jahr = getState('0_userdata.0.kalender.jahr').val; const result = getMonthFromWeek(kw, jahr); setState('0_userdata.0.kalender.monat_jahr', result, true); }); function getMonthFromWeek(kw, jahr) { const firstISOWeekStart = startOfISOWeek(new Date(jahr, 0, 4)); const dateInWeek = addWeeks(firstISOWeekStart, kw - 1); return format(dateInWeek, 'MMMM yyyy', { locale: de }); }Oder auf Änderung von deinem DP ausführen.
-
@david-g danke für deine Arbeit!
Die erste Version hat gleich geklappt.