Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Aktuelles Datum größer als eingegebenes Datum

    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

    Aktuelles Datum größer als eingegebenes Datum

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

      Hallo ihr

      Ich möchte gerne ein eingegebenes Datum mit dem Aktuellem Datum vergleichen. Leider klappt dies nicht so ganz.

      schedule("* * * * * *", async function () {
        if ('15.04.2022' <= formatDate(new Date(), "DD.MM.YYYY")) {
          console.log('test');
        }
      });  
      

      Wie würdet ihr dies Lösen ??

      OliverIO cash 2 Replies Last reply Reply Quote 0
      • OliverIO
        OliverIO @Pat last edited by OliverIO

        @pat
        So machst du einen String Vergleich und ist bei einem deutschen Datum nicht für größer kleiner Vergleich geeignet.

        Da das Datum auf deutsch vorliegt musst du es erst parsen damit man es vergleichen kann.
        Entweder du teilst die einzelnen Bestandteile selbst auf und wandelst es über jahr monat Tag in den datentyp date um
        Oder du verwendest eine Bibliothek die das für dich macht.
        Hier bspw mit der weit verbreiteten Bibliothek momentum
        https://stackoverflow.com/questions/48222291/convert-a-german-date-to-iso-date

        1 Reply Last reply Reply Quote 0
        • cash
          cash Most Active @Pat last edited by

          @pat

          var date_aktuelle_Uhrzeit = getDateObject(formatDate(new Date(), "hh:mm:ss"));
          if(getDateObject('07:30:00') < date_aktuelle_Uhrzeit){
          	log('xxx')
          }
          

          Ich vergleiche Datumswerte miteinander das funktioniert bei mir. Mann kann es aber auch mit Variable.getTime() in eine Zahl umwandeln und dann eine Zahl vergleichen.

          OliverIO 1 Reply Last reply Reply Quote 1
          • OliverIO
            OliverIO @cash last edited by OliverIO

            @cash
            du vergleichst keine Datumswerte, sondern Uhrzeiten.
            Da die Darstellung international sehr ähnlich ist (hh:mm:ss), gibt es da weniger Probleme.
            Auch weil bei einer Uhrzeit die höherwertige Angabe jeweils links steht, kann man hier stringvergleich verwenden.

            Die internationale Darstellung eines Datums sieht da schon anders aus
            DE: DD:MM:YY
            EN: YY-MM-DD
            (ganz geschweige die verschiedenen kalender-typen, die es auf der welt gibt, westlich, islam, diverse asiatische)
            (ach zeitzonen fällt mir da auch noch ein)

            Bei einem englischen Datum kann man ebenfalls Stringvergleich machen, bei einem deutschen halt nicht, weil der höherwertige Wert (Jahr) ganz rechts steht.

            Leider kennt der Date.parse-Befehl nur die englischen Formen + ein paar technische Formen

            Hoffnung macht hier das neue temporal-object und i18n object in javascript, welche aktuell in Abstimmung zur Einführung sind.

            Solange, muss man Bibliotheken verwenden oder aufwändig das selbst umsetzen.

            P 1 Reply Last reply Reply Quote 2
            • P
              Pat @OliverIO last edited by

              @oliverio

              Dank dir. Hat mir weiter geholfen. Es war schon zuspät an dem Abend 🙂
              Werde dann eine Lösung noch rein stellen für die anderen die auch mal das Prob haben.

              P 1 Reply Last reply Reply Quote 0
              • P
                Pat @Pat last edited by

                Hallo hier meine Lösung

                geht bestimmt noch eleganter 🙂

                function datum vergleich(){
                let a_tag = parseInt(formatDate(new Date(), "DD"));
                let a_month = parseInt(formatDate(new Date(), "MM"));
                let a_year = parseInt(formatDate(new Date(), "YYYY"));
                let a_datum_us = new Date(new Date(a_year,a_month,a_tag).toDateString());
                let len_date = getState(daten_len).val;
                
                    for (let i = 0; i<len_date; i++){
                    let abholdate = getState(a_daten).val[i].abholdatum.split('.');
                    let tag = parseInt(abholdate[0]);
                    let month = parseInt(abholdate[1]);
                    let year = parseInt(abholdate[2]);
                    let datum_us = new Date(new Date(year,month,tag).toDateString());
                
                        if(datum_us >= a_datum_us){
                            console.log('Das datum ist in der Zukunft');
                     }   
                    }
                }
                
                mickym 1 Reply Last reply Reply Quote 0
                • BananaJoe
                  BananaJoe Most Active last edited by

                  Also, ein

                  tempDatum = "2022-05-22 22:17:00";
                  dateinsec = getDateObject(tempDatum).getTime();
                  

                  gibt die aktuelle Zeit in Millisekunden seit dem 1.1.1970 zurück
                  Auf jeden Fall die Zeit als eine Zahl.

                  Mit der kann man prima rechnen oder vergleichen

                  1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @Pat last edited by

                    @pat Wenn Du die moments Bibliothek nutzt dann kannst Du mit after und before über einen Boolean einfach prüfen.

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    590
                    Online

                    31.9k
                    Users

                    80.1k
                    Topics

                    1.3m
                    Posts

                    5
                    8
                    1020
                    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