Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Wie das Datumsformat in VIS2 eintragen?

    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

    Wie das Datumsformat in VIS2 eintragen?

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

      Hallo, ich möchte ein Datum in VIS2 eintragen.
      Habe dieses Widget:

      7ea62cdc-8ee6-4ab4-a307-df90f94e6884-image.png

      570dcdde-0772-41c6-bc44-abc21aacb0ff-image.png

      Hier kommt das Format: "04.01.2025" heraus.
      ich benötige aber "2025-01-04", denn
      sonnst macht mein Script an der Stelle

          const start = new Date(variableDesDatums);
          log(start)
      

      einen "invalid Date" error

      Dachte er schnallt es, aber kann man das format irgendwo ändern?

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

        @ben1983 sagte: "invalid Date" error

        Nicht mit dem 04.01.2025. Daraus wird der 01.04.2025. Erst, wenn die erste Zahl > 12 ist, erscheint "invalid Date".

        Blockly_temp.JPG

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

          @paul53 Danke das klappt beim einsetzen der formatDate Funktion ganz gut.
          Nur macht er aus dem 04.01.2025 den 03.01.2025.
          Er zieht also einen Tag ab. kann ich den irgendwie dazuaddieren, oder etwas bestimmtes angeben?

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

            @ben1983 sagte: Nur macht er aus dem 04.01.2025 den 03.01.2025.

            Das glaube ich nicht: Der Monat muss vor dem Tag stehen, damit das Datum richtig interpretiert wird: "MM.DD.YYYY".

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

              @paul53 Aber du hast doch oben auch:

              formatDate(new Date('04.01.2025'),'DD.MM.YYYY'));
              stehen.

              Ich habe nun:

              formatDate(datumswert,"DD.MM.YYYY")
              

              und er spuckt bei Tag > 12 ein invalidDate aus. obwohl ja im format angegeben ist, dass zuerst date kommen soll:

              Visu: Start und ende:

              a8cd3f83-06df-4dab-90bb-ee3e6e67f515-image.png

              Ergebnis:

              a480ba7a-332d-459d-a517-bcf9c5373eb7-image.png

              1ab5b57d-9151-4f54-8e1b-48b601939076-image.png

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

                @ben1983 sagte: du hast doch oben auch:

                formatDate(new Date('04.01.2025'),'DD.MM.YYYY'));

                ... und das Datum ergibt im Ergebnis den 01.04.2025.
                Die Ausgabe kann im Format "DD.MM.YYYY" erfolgen, aber nicht die Eingabe. Im Eingabe-String muss der Monat vor dem Tag stehen, damit richtig interpretiert wird.

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

                  @paul53
                  OK. Also im log steht "2025-01-04"
                  Das bedeutet für mich YYYY = 2025 ; MM = 01 ; DD = 04.
                  nicht 01.05.2025 oder?

                  und in der eingabe der visu kann man ja das format nicht ändern, das ist ja gerade mein "Problem".

                  Das anzeigeformat "DD.MM.YYYY" finde ich ja gut, aber die new Date() funktion wohl nicht

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

                    @ben1983 sagte: und in der eingabe der visu kann man ja das format nicht ändern.

                    Du kannst den 4.1.2025 aber so eingeben: 01.04.2025. Also erst der Monat, dann der Tag.

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

                      @paul53 Ja aber es ist ja ein fertiges widget.
                      Man klickt auf einem Kalender ein datum an.

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

                        @ben1983 sagte: Man klickt auf einem Kalender ein datum an.

                        Dann tausche Monat und Tag im Skript vor new Date():

                        var date = '04.01.2025';
                        date = date.split('.');
                        date = date[1] + '.' + date[0] + '.' + date[2]; 
                        // oder
                        // date = date[2] + '-' + date[1] + '-' + date[0];
                        
                        Ben1983 1 Reply Last reply Reply Quote 0
                        • Ben1983
                          Ben1983 @paul53 last edited by

                          @paul53 OK.
                          Versuche ich mal, aber wär es nicht sinnvoll die Ausgabe des Widgets eingeben zu können?

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

                            @ben1983 sagte: wär es nicht sinnvoll die Ausgabe des Widgets eingeben zu können?

                            So wird die Ausgabe des Widgets ("DD.MM.YYYY") richtig verarbeitet.

                            Ben1983 2 Replies Last reply Reply Quote 0
                            • Ben1983
                              Ben1983 @paul53 last edited by

                              @paul53 Also ich meinte damit schon so ausgeben, aber im Hintergrund die Variable entsprechend eines angegebenen formats beschrieben / auslesen

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

                                @paul53 Habe jetzt meine Funktion so umgeändert:

                                läuft:

                                function nowIsBetweenCompleteDate(startdate, enddate){
                                    let temp = startdate.split(".");
                                    startdate = `${temp[2]}-${temp[1]}-${temp[0]}`;
                                    temp = enddate.split(".");
                                    enddate = `${temp[2]}-${temp[1]}-${temp[0]}`;
                                    const today = new Date();
                                    const start = new Date(startdate);
                                    const end = new Date(enddate);
                                    start.setHours(0);
                                    start.setMinutes(0);
                                    start.setSeconds(0);
                                    end.setHours(23);
                                    end.setMinutes(59);
                                    end.setSeconds(59);
                                    return (today >= start && today <= end);
                                }
                                

                                Allerdings liegt jetzt der string immer noch "falsch" im dp. und wenn drauf zugegriffen wird, dann kommt es zu einem fehler, also mussi ch es anders lösen

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

                                  @ben1983
                                  Kann man übrigens auch schön per replace machen:

                                  let start = new Date(startdate.replace(/(\d+)[.](\d+)[.](\d+)/,'$3-$2-$1'));
                                  

                                  Im Sinne von "CleanCode" würde ich persönlich auch strikt zwischen Parametern und lokalen Variablen trennen. Sonst kommt man da (später mal) schnell durcheinander. Soll heißen: Keine Parameter intern nochmals verändern.

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

                                    Ich habe jetzt das Widget Input verwendet:

                                    hier kann man das angeben:
                                    Das macht auf der Eingabemaske: DD.MM.YYYY
                                    gibt es aber als wert passend raus: YYYY-MM-DD

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

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    576
                                    Online

                                    31.8k
                                    Users

                                    80.0k
                                    Topics

                                    1.3m
                                    Posts

                                    3
                                    16
                                    295
                                    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