Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. KW/Jahr in Monat/Jahr umwandeln

    NEWS

    • Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    KW/Jahr in Monat/Jahr umwandeln

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      stenmic last edited by

      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. 2 Replies Last reply Reply Quote 0
      • H
        homecineplexx @stenmic last edited by homecineplexx

        @stenmic gibts da nicht vielleicht eine fertig bibliothek

        1 Reply Last reply Reply Quote 0
        • David G.
          David G. @stenmic last edited by 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 1 Reply Last reply Reply Quote 1
          • S
            stenmic @David G. last edited by

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

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            1.1k
            Online

            32.3k
            Users

            81.1k
            Topics

            1.3m
            Posts

            3
            4
            104
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo