Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] Kalenderwoche abrufen / zuweisen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Kalenderwoche abrufen / zuweisen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Ben1983
      Ben1983 last edited by 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?

      Rene55 1 Reply Last reply Reply Quote 0
      • Rene55
        Rene55 @Ben1983 last edited by

        @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);
        }

        Ben1983 1 Reply Last reply Reply Quote 0
        • Ben1983
          Ben1983 @Rene55 last edited by

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

          Codierknecht 1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @Ben1983 last edited by

            @ben1983
            Alternative:

            const moment = require('moment'); 
              
            let now = new moment();
            console.log(now.isoWeek()); 
            console.log(now.format('W'));
            
            Ben1983 1 Reply Last reply Reply Quote 0
            • Ben1983
              Ben1983 @Codierknecht last edited by

              @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 Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              457
              Online

              31.9k
              Users

              80.2k
              Topics

              1.3m
              Posts

              3
              5
              196
              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