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? -
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
-
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?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.
-
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.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden