Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. KW/Jahr in Monat/Jahr umwandeln

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    927

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

KW/Jahr in Monat/Jahr umwandeln

Geplant Angeheftet Gesperrt Verschoben JavaScript
4 Beiträge 3 Kommentatoren 286 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    stenmic
    schrieb am zuletzt editiert von
    #1

    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?

    H David G.D 2 Antworten Letzte Antwort
    0
    • S stenmic

      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?

      H Offline
      H Offline
      homecineplexx
      schrieb am zuletzt editiert von homecineplexx
      #2

      @stenmic gibts da nicht vielleicht eine fertig bibliothek

      1 Antwort Letzte Antwort
      0
      • S stenmic

        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?

        David G.D Offline
        David G.D Offline
        David G.
        schrieb am zuletzt editiert von David G.
        #3

        @stenmic

        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.

        Zeigt eure Lovelace-Visualisierung klick
        (Auch ideal um sich Anregungen zu holen)

        Meine Tabellen für eure Visualisierung klick

        S 1 Antwort Letzte Antwort
        1
        • David G.D David G.

          @stenmic

          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.

          S Offline
          S Offline
          stenmic
          schrieb am zuletzt editiert von
          #4

          @david-g danke für deine Arbeit!
          Die erste Version hat gleich geklappt.

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          622

          Online

          32.6k

          Benutzer

          82.2k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe