Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Kalenderwoche abrufen / zuweisen

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    777

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

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

[gelöst] Kalenderwoche abrufen / zuweisen

Scheduled Pinned Locked Moved JavaScript
5 Posts 3 Posters 260 Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Ben1983B Offline
    Ben1983B Offline
    Ben1983
    wrote on last edited by Ben1983
    #1

    Hallo, ich rufe mir die aktuelle Kalenderwoche online ab.
    Aktuell so:

    sync function getCalenderWeek(){
        // @ts-ignore
        const axios = require('axios');
        const result = await axios.get("http://kalenderwoche.celll.net?api=1");
        if(result && !result.error){
            if(result.data)
            setState(idKalenderwoche,result.data,true);
        }
        else{
            log("Fehler bei der Abfrage der Kalenderwoche","warn");
            setTimeout(getCalenderWeek,60000);
        }
    
    }
    

    Das funktioniert soweit super.
    Ich habe mich nun gefragt, ob es ioBroker intern vielleicht schon einen fertigen State für die Kalenderwoche gibt,
    oder ob ich dies so belassen kann?

    Rene55R 1 Reply Last reply
    0
    • Ben1983B Ben1983

      Hallo, ich rufe mir die aktuelle Kalenderwoche online ab.
      Aktuell so:

      sync function getCalenderWeek(){
          // @ts-ignore
          const axios = require('axios');
          const result = await axios.get("http://kalenderwoche.celll.net?api=1");
          if(result && !result.error){
              if(result.data)
              setState(idKalenderwoche,result.data,true);
          }
          else{
              log("Fehler bei der Abfrage der Kalenderwoche","warn");
              setTimeout(getCalenderWeek,60000);
          }
      
      }
      

      Das funktioniert soweit super.
      Ich habe mich nun gefragt, ob es ioBroker intern vielleicht schon einen fertigen State für die Kalenderwoche gibt,
      oder ob ich dies so belassen kann?

      Rene55R Offline
      Rene55R Offline
      Rene55
      wrote on last edited by
      #2

      @ben1983 Man kann die Kalenderwoche auch offline berechnen.


      //Kalenderwochenberechnung

      const date = new Date();
      const wocheDesJahres = weekOfYear(date);

      log ('Kalenderwoche: '+ wocheDesJahres);

      //___________________________
      // Beschreibe diese Funktion: Berechnet die aktuelle Woche
      function weekOfYear(date){
      const currentThursday = new Date(date.getTime() +(3-((date.getDay()+6) % 7)) * 86400000);
      // At the beginnig or end of a year the thursday could be in another year.
      const yearOfThursday = currentThursday.getFullYear();
      // Get first Thursday of the year
      const firstThursday = new Date(new Date(yearOfThursday,0,4).getTime() +(3-((new Date(yearOfThursday,0,4).getDay()+6) % 7)) * 86400000);
      // +1 we start with week number 1
      // +0.5 an easy and dirty way to round result (in combinationen with Math.floor)
      return Math.floor(1 + 0.5 + (currentThursday.getTime() - firstThursday.getTime()) / 86400000/7);
      }

      Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
      ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
      Wetterstation: Froggit WH3000SE V1.6.6

      Ben1983B 1 Reply Last reply
      0
      • Rene55R Rene55

        @ben1983 Man kann die Kalenderwoche auch offline berechnen.


        //Kalenderwochenberechnung

        const date = new Date();
        const wocheDesJahres = weekOfYear(date);

        log ('Kalenderwoche: '+ wocheDesJahres);

        //___________________________
        // Beschreibe diese Funktion: Berechnet die aktuelle Woche
        function weekOfYear(date){
        const currentThursday = new Date(date.getTime() +(3-((date.getDay()+6) % 7)) * 86400000);
        // At the beginnig or end of a year the thursday could be in another year.
        const yearOfThursday = currentThursday.getFullYear();
        // Get first Thursday of the year
        const firstThursday = new Date(new Date(yearOfThursday,0,4).getTime() +(3-((new Date(yearOfThursday,0,4).getDay()+6) % 7)) * 86400000);
        // +1 we start with week number 1
        // +0.5 an easy and dirty way to round result (in combinationen with Math.floor)
        return Math.floor(1 + 0.5 + (currentThursday.getTime() - firstThursday.getTime()) / 86400000/7);
        }

        Ben1983B Offline
        Ben1983B Offline
        Ben1983
        wrote on last edited by
        #3

        @rene55 Ja, anhand des Datums. schon klar.
        Aber nochmal guter Einwand, dann kann es auch keinen Fehler geben.

        CodierknechtC 1 Reply Last reply
        0
        • Ben1983B Ben1983

          @rene55 Ja, anhand des Datums. schon klar.
          Aber nochmal guter Einwand, dann kann es auch keinen Fehler geben.

          CodierknechtC Online
          CodierknechtC Online
          Codierknecht
          Developer Most Active
          wrote on last edited by
          #4

          @ben1983
          Alternative:

          const moment = require('moment'); 
            
          let now = new moment();
          console.log(now.isoWeek()); 
          console.log(now.format('W'));
          

          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi
          Zabbix Certified Specialist
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          Ben1983B 1 Reply Last reply
          0
          • CodierknechtC Codierknecht

            @ben1983
            Alternative:

            const moment = require('moment'); 
              
            let now = new moment();
            console.log(now.isoWeek()); 
            console.log(now.format('W'));
            
            Ben1983B Offline
            Ben1983B Offline
            Ben1983
            wrote on last edited by
            #5

            @codierknecht Cool, habe es jetzt so:

            // Zuweisen der Kalenderwoche
            schedule('4 0 * * *',()=>{
                // @ts-ignore
                const moment = require('moment'); 
                setState(idKalenderwoche,new moment().isoWeek(),true);
            })
            
            1 Reply Last reply
            0

            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

            With your input, this post could be even better 💗

            Register Login
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            Support us

            ioBroker
            Community Adapters
            Donate

            605

            Online

            32.8k

            Users

            82.7k

            Topics

            1.3m

            Posts
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Login

            • Don't have an account? Register

            • Login or register to search.
            • First post
              Last post
            0
            • Home
            • Recent
            • Tags
            • Unread 0
            • Categories
            • Unreplied
            • Popular
            • GitHub
            • Docu
            • Hilfe