Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Date an schedule übergeben

    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

    Date an schedule übergeben

    This topic has been deleted. Only users with topic management privileges can see it.
    • OliverIO
      OliverIO @ticaki last edited by OliverIO

      @ticaki @Giraffe

      mit new Date() kann es nicht funktionieren, da der Zeitpunkt dann ja schon vorbei ist.
      schedule verwendet im Hintergrund diese bibliothek

      https://github.com/node-schedule/node-schedule#date-based-scheduling

      1 Reply Last reply Reply Quote 0
      • F
        fastfoot @Giraffe last edited by

        @giraffe ich sehe da kein Problem:

        let sec = new Date().getTime() + 1000;
        let dat = new Date(sec);
        
        dat.setSeconds(dat.getSeconds() + 2);
        
        schedule(sec, () => log(typeof (sec)))
        schedule(dat, () => log(typeof (dat)))
        
        T 1 Reply Last reply Reply Quote 0
        • T
          ticaki Developer @fastfoot last edited by

          @fastfoot

          //typescript
          schedule(new Date(new Date().getTime()+100), function(obj){});
          
          ^ ERROR: No overload matches this call. Overload 1 of 3
          
          OliverIO F 2 Replies Last reply Reply Quote 0
          • OliverIO
            OliverIO @ticaki last edited by

            @ticaki sagte in Date an schedule übergeben:

                                                                                                                                        //typescript                                                                                                                                                                            schedule(new Date(new Date().getTime()+100), function(obj){});                                            
            

            so würde es gehen.
            Der Typ EmptyCallback mag wohl keine function() Deklarationen

            schedule(
                new Date(new Date().getTime()+5000), 
                ()=>{
                    console.log("test");
                }
            );
            
            
            T 1 Reply Last reply Reply Quote 0
            • T
              ticaki Developer @OliverIO last edited by

              @oliverio
              Danke

              1 Reply Last reply Reply Quote 0
              • F
                fastfoot @ticaki last edited by

                @ticaki nun, das ist nicht die Funktion wie ich sie gezeigt habe :-)Es geht ja darum ob Date angenommen wird oder nicht

                Übrigens ist auch mein Beispiel 100% Typescript!

                T 1 Reply Last reply Reply Quote 0
                • T
                  ticaki Developer @fastfoot last edited by

                  @fastfoot
                  Verzeih mir... ich verwende meinst function() weil gewöhnt, dann muß ich da wohl was ändern 🙂

                  F 1 Reply Last reply Reply Quote 0
                  • F
                    fastfoot @ticaki last edited by

                    @ticaki ist kein Ding des Verzeihens, aber wenn man ein Beispiel verändert noch bevor man es getestet hat, dann ist da oft kein Erkenntnisgewinn. Und es eröffnen sich oft Nebenkriegsschauplätze wie hier No overload matches... die aber nichts mit dem Ursprungsproblem zu tun haben und deshalb davon ablenken, so wie hier

                    Meine Beispiele sind auch nicht gedacht, gutes Programmieren zu zeigen, sie funktionieren normalerweise und bringen ein Ding auf den Punkt, mehr nicht

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      ticaki Developer @fastfoot last edited by

                      @fastfoot
                      Da hast du zu 50% recht. Hätte ich dein Beispiel getestet wäre bei mir immer noch() => == function() und beim nächsten Einsatz hätte ich weder dieses Beispiel gefunden noch mich daran erinnert. Nur das es schon wieder nicht funktioniert. In den letzten 2 Monaten hab ich dadurch das du und andere mich korrigieren mehr Feinheiten gelernt als in den 2 Jahren davor.

                      F 1 Reply Last reply Reply Quote 0
                      • F
                        fastfoot @ticaki last edited by

                        @ticaki du vergisst dass das hier nicht Dein thread ist, in welchem Du Support suchst. Es geht einzig darum zu zeigen ob type Date als Parameter genutzt werden kann oder nicht. Du hast das Beispiel verändert und dadurch den Eindruck erweckt dass es dennoch nicht funktioniert.

                        Wenn du eine Arrow-Function in eine normale Definition umwandeln willst so geht das sehr einfach: schedule(dat, function () {log(typeof (dat))}) Bei Dir war aber der body {} leer, du hast meine Definition gleich zweifach verändert. Als Weiteres hast du übersehen dass Typescript eben dazu da ist Fehler nicht durchgehen zu lassen, hier war das der leere body des Callback. Das ist auch eig. richtig denn was macht ein callback für einen Sinn wenn man darin nichts tut? In JS hättest du dich gewundert warum du nicht siehst wann der schedule() triggert, in TS warst du nicht in der Lage die Fehlermeldung vorher zu interpretieren(ich auch nur ausnahmsweise!!)

                        Zum Schluss möchte ich unbedingt anmerken dass mein Post ganz ganz ganz weit weg davon sein soll dir etwas vorzuwerfen!! Mich freut es sehr wenn ich sehe dass jd etwas lernen will, deshalb sieh bitte diesen Post als nett gemeinte Hilfestellung für die Zukunft und eben nicht als Zurechtweisung, das soll er nicht sein!

                        Happy coding 🙂

                        OliverIO T 2 Replies Last reply Reply Quote 0
                        • OliverIO
                          OliverIO @fastfoot last edited by

                          @fastfoot
                          Allerdings haben wir hier einen Fehler in den typescript Typen Definition gefunden,
                          Da schedule nicht nur Arrow functions als callback zulässt.
                          Ich habe nicht geprüft wo der Typ emptycallback sonst noch wo vorkommt

                          F 1 Reply Last reply Reply Quote 0
                          • F
                            fastfoot @OliverIO last edited by

                            @oliverio haben wir nicht, siehe meine definition im Post vor diesem, die läuft! Es lag am leeren body, für mich bedeutet empty callback nicht leerer body( da könnte man ihn auch weglassen) sondern keine Parameter

                            OliverIO 1 Reply Last reply Reply Quote 0
                            • OliverIO
                              OliverIO @fastfoot last edited by

                              @fastfoot

                              ah ja stimmt. und mit function functioniert es auch, wenn kein übergabeparameter mit angegeben wird. jetzt ist auch klar warum der datentyp EmptyCallback heißt.
                              der function body ist wohl egal ob mit oder ohne.

                              schedule(
                                  new Date(new Date().getTime()+5000), 
                                  function() {
                                      console.log("test");
                                  }
                              );
                              
                              
                              1 Reply Last reply Reply Quote 0
                              • T
                                ticaki Developer @fastfoot last edited by

                                @fastfoot sagte in Date an schedule übergeben:

                                @ticaki du vergisst dass das hier nicht Dein thread ist.

                                Das vergesse ich nicht. 🙂 Wie alle hier möchte ich helfen und Dinge die für dich normal und nachvollziehbar sind, sind es für mich nicht.

                                Dir mag es nicht auffallen aber du hast hier bis zu 8 kleine Lektionen erteilt anstatt nur ein funktionierendes Codebeispiel bereitzustellen. War von mir zwar nicht so gedacht, aber ich habe ja nicht einen leeren Body benutzt, weil ich wusste das das nicht funktioniert. Diesen habe ich nur verwendet, weil der TE in seinem Eröffnungspsting es ebenso tat.

                                Zum Schluss möchte ich unbedingt anmerken dass mein Post ganz ganz ganz weit weg davon sein soll dir etwas vorzuwerfen!!

                                Selbst wenn wäre ich für die Lektionen dankbar und der TE wohl auch.

                                Daher Danke 😊

                                1 Reply Last reply Reply Quote 0
                                • G
                                  Giraffe last edited by Giraffe

                                  Moin @all,
                                  sorry, dass ich eure reichhaltige Diskusion erst jetzt weiter verfolgen kann. Erstmal danke bis hier!

                                  Tatsächlich ging es mir nur darum herauszufinden, warum schedule offensichtlich eine Date-Type akzeptieren soll und dieses in der Praxis aber dann doch nicht geht... In sofern ist es auch total irrelevant ob der Zeitpunkt schon vergangen ist und es am Ende deshalb nicht funktioniert.

                                  Auch wollte ich gern zu einem fixen Zeitpunkt einen einmalige function() auslösen. Etwas wie

                                  let myDate = new Date().getTime()
                                  

                                  würde nur die Uhrzeit übernehmen und das ist hier nicht erwünscht. Viel mehr wollte ich (hier eine etwas plakativie Syntax) sowas erreichten:

                                  let date:Date = new Date('Sat Aug 26 2023 09:32:00 GMT+0200');
                                  

                                  Das jedoch auch nur am Rande, den das Thema ist ja die Übergabe eines Date-Objektes.

                                  Der Hinweis, dass das Callback eine EmptyCallback ist, ist dazu auch schon die Lösung. Aus bloßer Gewöhnung habe ich hier eben das Objekt mit an den den Callback übergeben wollen, was bei EmptyCallback nun mal nicht geht und so zu meinem Problem führte. Etwas irreführend ist hier zwar das der Date-Parameter des Schedules als Fehler angemeckert wird (sonst wäre ich vielleicht ja noch drauf gekommen). Wie auch, immer dies hier

                                  let myDate:Date = new Date('Sat Aug 26 2023 09:32:00 GMT+0200');
                                  schedule(myDate,function(){
                                      console.log('es läuft')
                                  })
                                  

                                  funktioniert.

                                  Ziel erreicht! DANKE!

                                  Grüße
                                  Giraffe

                                  F 1 Reply Last reply Reply Quote 0
                                  • F
                                    fastfoot @Giraffe last edited by

                                    @giraffe sagte in Date an schedule übergeben:

                                    ...Etwas wie
                                    let myDate = new Date().getTime()
                                    würde nur die Uhrzeit übernehmen und das ist hier nicht erwünscht.

                                    wie kommst du darauf? gettime() liefert genau einen Zeitpunkt und nicht etwa sowas wie eine Uhrzeit

                                    G 1 Reply Last reply Reply Quote 0
                                    • G
                                      Giraffe @fastfoot last edited by Giraffe

                                      @fastfoot

                                      Gute Frage! 😀 Wenn ich es herausgefunden habe verrate ich es dir... 😊

                                      Ich dachte irgendwie da würde ein Uhr-Zeiten-String ('13:00') herauskommen. Vielleicht ist der der Name der Methode auch etwas irführend und ich werde grade auch das Gefühl nicht los, dass ich es mit einer anderen Sprache verwechselt habe.

                                      Der Witz ist aber, dass ich genau dann dem absoluten Millisekunden-Wert schon als Alternative gesucht habe und dabei - weil ich mir ja soooo sicher war - gettime() nicht angesehen habe. Besser kann man nun Betriebsbindheit nicht mehr darstellen.... 🤦‍♂️

                                      Also mein:e liebe:r @fastfoot: 🙇‍♂️

                                      Grüße
                                      Giraffe

                                      OliverIO 1 Reply Last reply Reply Quote 0
                                      • OliverIO
                                        OliverIO @Giraffe last edited by

                                        @giraffe

                                        also wenn ich es richtig verstanden habe, willst du ein Datenobjekt mit einem bestimmten in der Zukunft gelegenen Zeitpunkt erstellen.?
                                        Hast du schon mal

                                        new Date("1.1.2024 15:00")

                                        probiert? das ergibt genau den Zeitpunkt.
                                        Nur die Uhrzeit ist nicht spezifisch genug, da javascript dann nicht weiß ob gestern, heute,morgen.
                                        ..und genau so ein Dateobjekt kannst du dann an schedule übergeben.
                                        Im Zweifel hilft es dann auch einfach noch die Dokumentation von javascript sorgfältig zu lesen
                                        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date?retiredLocale=de#several_ways_to_create_a_date_object

                                        G 1 Reply Last reply Reply Quote 0
                                        • G
                                          Giraffe @OliverIO last edited by Giraffe

                                          @oliverio

                                          Danke für deine Hilfe. Wie weiter oben schon geschrieben, habe ich es bereits (genau so) hinbekommen.... Problem war auch eher die falsche Verwendung es callbacks.

                                          Grüße
                                          Giraffe

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          880
                                          Online

                                          31.9k
                                          Users

                                          80.1k
                                          Topics

                                          1.3m
                                          Posts

                                          4
                                          24
                                          758
                                          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