Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Const richtig bei timestamp (toTimeString)

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Const richtig bei timestamp (toTimeString)

Geplant Angeheftet Gesperrt Verschoben JavaScript
18 Beiträge 3 Kommentatoren 862 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • OliverIOO OliverIO

    @matze55

    Schau mal hier
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

    matze55M Offline
    matze55M Offline
    matze55
    schrieb am zuletzt editiert von matze55
    #4

    @oliverio jäährr...du bist mein Retter hat geklappt. Super
    Der Code klappt super aber ..jetzt kommt es der Monatsname fehlt hast du da was in deiner zauberkiste ?

    Homematic CCU3,-Synology NAS 4TB,- 2 Sonos One,- Gigabyte N4500 8GB DDR4 2TB
    Tapo C210 Cam
    WLED Steuerung über lcdwiki

    OliverIOO 1 Antwort Letzte Antwort
    0
    • matze55M matze55

      @oliverio jäährr...du bist mein Retter hat geklappt. Super
      Der Code klappt super aber ..jetzt kommt es der Monatsname fehlt hast du da was in deiner zauberkiste ?

      OliverIOO Offline
      OliverIOO Offline
      OliverIO
      schrieb am zuletzt editiert von OliverIO
      #5

      @matze55

      Schaue unter den options. Da kann man sehr fein konfigurieren was ausgegeben werden soll.
      https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString#using_options

      Leider hast u nicht gezeigt was du schon hast

      Meine Adapter und Widgets
      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
      Links im Profil

      matze55M 2 Antworten Letzte Antwort
      0
      • OliverIOO OliverIO

        @matze55

        Schaue unter den options. Da kann man sehr fein konfigurieren was ausgegeben werden soll.
        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString#using_options

        Leider hast u nicht gezeigt was du schon hast

        matze55M Offline
        matze55M Offline
        matze55
        schrieb am zuletzt editiert von matze55
        #6

        @oliverio Danke für deine Hilfe das hat geklappt mit den options. Ich habe folgendes getan. Ich wollte eine JSON tabelle für Alexa Sprachbefehle suchen aber hier nur das Log Script von Mic gefunden, was aber nicht mehr gepflegt wird, gefunden. Darauf hin gat mir die grosse Suchmaschine ein Code ausgespuckt wo ich die Sprachbefehle in eine JSON Tabelle schreibe und mir in der VIS anzeigen tut.

        Die Datenpunkte habe ich in 0_userdata angelegt. Da ich Fensterkontakte habe und die im Tuya Adapter intergriert sind fange ich dort true und false ab, bei geschlossenen und geöffneten Fenstern und habe per blockly worauf Alexa reagiert mit ihrer Stimme erstellt. Somit habe ich per JS den Code gefunden aber bin mit dem timestamp nicht klargekommen.

        Das war mein Anliegen aber jetzt klappt das Danke nochmals.

        Homematic CCU3,-Synology NAS 4TB,- 2 Sonos One,- Gigabyte N4500 8GB DDR4 2TB
        Tapo C210 Cam
        WLED Steuerung über lcdwiki

        1 Antwort Letzte Antwort
        0
        • OliverIOO OliverIO

          @matze55

          Schaue unter den options. Da kann man sehr fein konfigurieren was ausgegeben werden soll.
          https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString#using_options

          Leider hast u nicht gezeigt was du schon hast

          matze55M Offline
          matze55M Offline
          matze55
          schrieb am zuletzt editiert von matze55
          #7

          @oliverio Ich habe mal noch eine Frage zu den timestamp. Kann man bei der Ausgabe beim timstamp die Texte ,,Heute,, und ,,Gestern,, integrieren. Die Definition ist momentan so definiert:

          //Datum und Uhrzeit definieren per const
              const opt = {
              weekday: "short",//Langer Wochentag
              year: "numeric",//Jahr wird per Zahl angezeigt
              month: "short",//Kurzer Monatsname
              day: "numeric",//Tag wird per Zahl angezeigt
              hour : "numeric",//Stunde wird per Zahl angezeigt
              minute : "numeric",//Minute wird per Zahl angezeigt
              second : "numeric",//Sekunde wird per Zahl angezeigt aber ist aus
              };
              //End
          

          Es ist eine Rechenaufgabe die man gestalten kann, aber die Ausgabe gestaltet sich schwierig.

          Homematic CCU3,-Synology NAS 4TB,- 2 Sonos One,- Gigabyte N4500 8GB DDR4 2TB
          Tapo C210 Cam
          WLED Steuerung über lcdwiki

          OliverIOO 1 Antwort Letzte Antwort
          0
          • matze55M matze55

            @oliverio Ich habe mal noch eine Frage zu den timestamp. Kann man bei der Ausgabe beim timstamp die Texte ,,Heute,, und ,,Gestern,, integrieren. Die Definition ist momentan so definiert:

            //Datum und Uhrzeit definieren per const
                const opt = {
                weekday: "short",//Langer Wochentag
                year: "numeric",//Jahr wird per Zahl angezeigt
                month: "short",//Kurzer Monatsname
                day: "numeric",//Tag wird per Zahl angezeigt
                hour : "numeric",//Stunde wird per Zahl angezeigt
                minute : "numeric",//Minute wird per Zahl angezeigt
                second : "numeric",//Sekunde wird per Zahl angezeigt aber ist aus
                };
                //End
            

            Es ist eine Rechenaufgabe die man gestalten kann, aber die Ausgabe gestaltet sich schwierig.

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von OliverIO
            #8

            @matze55

            ja rechenaufgabe. im js standard ist sowas nicht enthalten

            function getRelativeDayLabel(dateInput) {
              const inputDate = new Date(dateInput); // Kann Date, Timestamp oder ISO-String sein
              const today = new Date();
              
              // Uhrzeit auf 00:00 setzen, damit nur der Tag verglichen wird
              today.setHours(0, 0, 0, 0);
              inputDate.setHours(0, 0, 0, 0);
            
              const diffInMs = today - inputDate;
              const diffInDays = diffInMs / (1000 * 60 * 60 * 24);
            
              if (diffInDays === 0) {
                return "heute";
              } else if (diffInDays === 1) {
                return "gestern";
              } else if (diffInDays > 1) {
                return "älter";
              } else {
                return "zukünftig"; // falls das Datum in der Zukunft liegt
              }
            }
            

            wo willst du das anwenden?

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            matze55M 1 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              @matze55

              ja rechenaufgabe. im js standard ist sowas nicht enthalten

              function getRelativeDayLabel(dateInput) {
                const inputDate = new Date(dateInput); // Kann Date, Timestamp oder ISO-String sein
                const today = new Date();
                
                // Uhrzeit auf 00:00 setzen, damit nur der Tag verglichen wird
                today.setHours(0, 0, 0, 0);
                inputDate.setHours(0, 0, 0, 0);
              
                const diffInMs = today - inputDate;
                const diffInDays = diffInMs / (1000 * 60 * 60 * 24);
              
                if (diffInDays === 0) {
                  return "heute";
                } else if (diffInDays === 1) {
                  return "gestern";
                } else if (diffInDays > 1) {
                  return "älter";
                } else {
                  return "zukünftig"; // falls das Datum in der Zukunft liegt
                }
              }
              

              wo willst du das anwenden?

              matze55M Offline
              matze55M Offline
              matze55
              schrieb am zuletzt editiert von matze55
              #9

              @oliverio Danke für die Antwort ich will es hier integrieren denn so sieht der JS Code momentan aus:

              // Datenpunkt für die JSON-Tabelle (anpassen!)
              const jsonTableDp = '0_userdata.0.alexa.jsonTable';
              
              // Funktion zum Hinzufügen eines Eintrags zur Tabelle
              function addJsonEntry(device, text, source) {
                try {
                  // Datenpunkt vom Typ JSON erstellen oder aktualisieren
                  const currentState = getState(jsonTableDp).val;
                  let jsonTable = [];
              
                  if (currentState && typeof currentState === 'string' && currentState.trim() !== '') {
                    jsonTable = JSON.parse(currentState);
                  }
                  //Datum und Uhrzeit definieren per const
                  const opt = {
                  weekday: "short",//Langer Wochentag
                  year: "numeric",//Jahr wird per Zahl angezeigt
                  month: "short",//Kurzer Monatsname
                  day: "numeric",//Tag wird per Zahl angezeigt
                  hour : "numeric",//Stunde wird per Zahl angezeigt
                  minute : "numeric",//Minute wird per Zahl angezeigt
                  second : "numeric",//Sekunde wird per Zahl angezeigt aber ist aus
                  };
                  //End
                  const newEntry = {
                    //timestamp: new Date().toISOString(),//Ausgeschalten
                    //date: new Date().toTimeString().slice(0,9,),//Ausgeschalten
                    date: new Date().toLocaleString('de-DE', opt),
                    device: device,
                    text: text,
                    source: source
                  };
              
                  jsonTable.push(newEntry);
              
                  setState(jsonTableDp, JSON.stringify(jsonTable), true);
                  log('Eintrag zur JSON-Tabelle hinzugefügt: ' + JSON.stringify(newEntry), 'info');
              
                } catch (error) {
                  log('Fehler beim Hinzufügen zum JSON: ' + error, 'error');
                }
              }
              
              
              // Trigger für den Alexa-Adapter (Anpassen!)
              on({id: 'alexa2.0.Echo-Devices.G090P30883460659.Commands.speak', change: "any"}, async function (obj) {
                const deviceId = obj.id.split('.')[2];
                const text = obj.state.val;
              
                if (text) {
                    addJsonEntry(deviceId, text, 'alexa2.0');
                }
              });
              
              ///TEST
              
              ///
              
              // Trigger für einen Datenpunkt (Beispiel)
              /*on({id: '0_userdata.0.alexa.myTextSource', change: "any"}, async function (obj) {
                const text = obj.state.val;
              
                if (text) {
                    addJsonEntry('MyCustomSource', text, 'Datenpunkt');
                }
              });*/
              
              // Optional: Skript zum Löschen der Tabelle (auf eigene Gefahr!)
              on({id: '0_userdata.0.alexa.deleteJsonTable', change: "any"}, async function (obj) {
                if (obj.state.val === true) {
                    setState(jsonTableDp, "[]", true);
                    log('JSON-Tabelle gelöscht.', 'warn');
                    setState('0_userdata.0.alexa.deleteJsonTable', false, true);
                }
              });
              

              Die Ausgabe erfolgt dann in der VIS. so werden die Sprachbefehle aufgelistet die ich per Blockly ansteuere. Wenn ich mich jetzt richtig ausdrücke.
              Der timestamp mit dem Text ,,heute,, und ,,gestern,, sollte mit in die ,,const opt,, mit integriert sein. Ob das gehen würde.
              Muss ich die funktion die du postet mit einfügen im JS oder muss das gesamte umgebaut werden.

              mfg

              Homematic CCU3,-Synology NAS 4TB,- 2 Sonos One,- Gigabyte N4500 8GB DDR4 2TB
              Tapo C210 Cam
              WLED Steuerung über lcdwiki

              OliverIOO 1 Antwort Letzte Antwort
              0
              • matze55M matze55

                @oliverio Danke für die Antwort ich will es hier integrieren denn so sieht der JS Code momentan aus:

                // Datenpunkt für die JSON-Tabelle (anpassen!)
                const jsonTableDp = '0_userdata.0.alexa.jsonTable';
                
                // Funktion zum Hinzufügen eines Eintrags zur Tabelle
                function addJsonEntry(device, text, source) {
                  try {
                    // Datenpunkt vom Typ JSON erstellen oder aktualisieren
                    const currentState = getState(jsonTableDp).val;
                    let jsonTable = [];
                
                    if (currentState && typeof currentState === 'string' && currentState.trim() !== '') {
                      jsonTable = JSON.parse(currentState);
                    }
                    //Datum und Uhrzeit definieren per const
                    const opt = {
                    weekday: "short",//Langer Wochentag
                    year: "numeric",//Jahr wird per Zahl angezeigt
                    month: "short",//Kurzer Monatsname
                    day: "numeric",//Tag wird per Zahl angezeigt
                    hour : "numeric",//Stunde wird per Zahl angezeigt
                    minute : "numeric",//Minute wird per Zahl angezeigt
                    second : "numeric",//Sekunde wird per Zahl angezeigt aber ist aus
                    };
                    //End
                    const newEntry = {
                      //timestamp: new Date().toISOString(),//Ausgeschalten
                      //date: new Date().toTimeString().slice(0,9,),//Ausgeschalten
                      date: new Date().toLocaleString('de-DE', opt),
                      device: device,
                      text: text,
                      source: source
                    };
                
                    jsonTable.push(newEntry);
                
                    setState(jsonTableDp, JSON.stringify(jsonTable), true);
                    log('Eintrag zur JSON-Tabelle hinzugefügt: ' + JSON.stringify(newEntry), 'info');
                
                  } catch (error) {
                    log('Fehler beim Hinzufügen zum JSON: ' + error, 'error');
                  }
                }
                
                
                // Trigger für den Alexa-Adapter (Anpassen!)
                on({id: 'alexa2.0.Echo-Devices.G090P30883460659.Commands.speak', change: "any"}, async function (obj) {
                  const deviceId = obj.id.split('.')[2];
                  const text = obj.state.val;
                
                  if (text) {
                      addJsonEntry(deviceId, text, 'alexa2.0');
                  }
                });
                
                ///TEST
                
                ///
                
                // Trigger für einen Datenpunkt (Beispiel)
                /*on({id: '0_userdata.0.alexa.myTextSource', change: "any"}, async function (obj) {
                  const text = obj.state.val;
                
                  if (text) {
                      addJsonEntry('MyCustomSource', text, 'Datenpunkt');
                  }
                });*/
                
                // Optional: Skript zum Löschen der Tabelle (auf eigene Gefahr!)
                on({id: '0_userdata.0.alexa.deleteJsonTable', change: "any"}, async function (obj) {
                  if (obj.state.val === true) {
                      setState(jsonTableDp, "[]", true);
                      log('JSON-Tabelle gelöscht.', 'warn');
                      setState('0_userdata.0.alexa.deleteJsonTable', false, true);
                  }
                });
                

                Die Ausgabe erfolgt dann in der VIS. so werden die Sprachbefehle aufgelistet die ich per Blockly ansteuere. Wenn ich mich jetzt richtig ausdrücke.
                Der timestamp mit dem Text ,,heute,, und ,,gestern,, sollte mit in die ,,const opt,, mit integriert sein. Ob das gehen würde.
                Muss ich die funktion die du postet mit einfügen im JS oder muss das gesamte umgebaut werden.

                mfg

                OliverIOO Offline
                OliverIOO Offline
                OliverIO
                schrieb am zuletzt editiert von OliverIO
                #10

                @matze55

                In das const opt kannst du das nicht integrieren.
                Aber du könntest Zeile 28 erweitern.
                Allerdings würde es so aktuell ja immer heute ergeben, da new Date() immer den aktuellen Zeitpunkt ergibt.
                Wo kommt das Datum her für das du das berechnen möchtest?

                Meine Adapter und Widgets
                TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                Links im Profil

                matze55M 1 Antwort Letzte Antwort
                0
                • OliverIOO OliverIO

                  @matze55

                  In das const opt kannst du das nicht integrieren.
                  Aber du könntest Zeile 28 erweitern.
                  Allerdings würde es so aktuell ja immer heute ergeben, da new Date() immer den aktuellen Zeitpunkt ergibt.
                  Wo kommt das Datum her für das du das berechnen möchtest?

                  matze55M Offline
                  matze55M Offline
                  matze55
                  schrieb am zuletzt editiert von matze55
                  #11

                  @oliverio Zeile 28 da wird es in Json Eintrag geschrieben. Wenn das Licht eingeschalten wird ...wird der timestamp geschrieben...als Bsp. Das licht ist eingeschalten Heute um plapla ect.
                  Wenn ein Tag vergeht soll ja in der funktion die du hier postest..ensteht ja eine Differenz von 24 Stunden.

                  Ich habe mal deinen Code ausgetauscht was so aussieht:

                  function getRelativeDayLabel() {
                    const today = new Date().toLocaleString;
                    // Uhrzeit auf 00:00 setzen, damit nur der Tag verglichen wird
                    today.setHours(0, 0, 0, 0);
                    date.setHours(0, 0, 0, 0);
                    const diffInMs = today - date;
                    const diffDays = diffInMs / (24 * 60 * 60 * 1000);
                      if (diffDays === 0) {
                      return "Heute";
                      } else if (diffInDays === 1) {
                      return "Gestern";
                      } 
                      }
                  

                  und in der Ausgabe es geändert in:

                  date: new Date().toLocaleString('de-DE', getRelativeDayLabel),
                  

                  Ich habe es noch ein wenig angepasst für mich.

                  mfg

                  Homematic CCU3,-Synology NAS 4TB,- 2 Sonos One,- Gigabyte N4500 8GB DDR4 2TB
                  Tapo C210 Cam
                  WLED Steuerung über lcdwiki

                  OliverIOO 1 Antwort Letzte Antwort
                  0
                  • matze55M matze55

                    @oliverio Zeile 28 da wird es in Json Eintrag geschrieben. Wenn das Licht eingeschalten wird ...wird der timestamp geschrieben...als Bsp. Das licht ist eingeschalten Heute um plapla ect.
                    Wenn ein Tag vergeht soll ja in der funktion die du hier postest..ensteht ja eine Differenz von 24 Stunden.

                    Ich habe mal deinen Code ausgetauscht was so aussieht:

                    function getRelativeDayLabel() {
                      const today = new Date().toLocaleString;
                      // Uhrzeit auf 00:00 setzen, damit nur der Tag verglichen wird
                      today.setHours(0, 0, 0, 0);
                      date.setHours(0, 0, 0, 0);
                      const diffInMs = today - date;
                      const diffDays = diffInMs / (24 * 60 * 60 * 1000);
                        if (diffDays === 0) {
                        return "Heute";
                        } else if (diffInDays === 1) {
                        return "Gestern";
                        } 
                        }
                    

                    und in der Ausgabe es geändert in:

                    date: new Date().toLocaleString('de-DE', getRelativeDayLabel),
                    

                    Ich habe es noch ein wenig angepasst für mich.

                    mfg

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von OliverIO
                    #12

                    @matze55

                    das dürfte so nicht funktionieren.
                    Es gibt kein Übergabeparameter
                    und date ist nicht gleich Date()

                    und das verstehe ich auch nicht.
                    du übergibst hier die referenz auf die funktion, der 2.Parameter muss aber eine Struktur wie dein const opt weiter oben.

                    date: new Date().toLocaleString('de-DE', getRelativeDayLabel),
                    

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    matze55M 1 Antwort Letzte Antwort
                    0
                    • OliverIOO OliverIO

                      @matze55

                      das dürfte so nicht funktionieren.
                      Es gibt kein Übergabeparameter
                      und date ist nicht gleich Date()

                      und das verstehe ich auch nicht.
                      du übergibst hier die referenz auf die funktion, der 2.Parameter muss aber eine Struktur wie dein const opt weiter oben.

                      date: new Date().toLocaleString('de-DE', getRelativeDayLabel),
                      
                      matze55M Offline
                      matze55M Offline
                      matze55
                      schrieb am zuletzt editiert von matze55
                      #13

                      @oliverio Ich habe doch nur die funktion aus deinem Post in die Abfrage gepackt.
                      Vorher:

                      date: new Date().toLocaleString('de-DE', opt),
                      

                      Nachher:

                      date: new Date().toLocaleString('de-DE', getRelativeDayLabel),
                      

                      3.Möglichkeit:

                      timestamp: new Date().toLocaleString('de-DE', getRelativeDayLabel),
                      

                      Ausgabe in JSON:

                      javascript.0	13:53:43.397	info	
                      
                      Eintrag zur JSON-Tabelle hinzugefügt: {"date":"26.8.2025, 13:53:43","device":"Echo-Devices","text":"Das Schlafzimmerlicht ist ausgeschalten","source":"alexa2.0"}
                      

                      Ich kann es drehen wie ich will aber mit der Anzeige klappt es nicht auch nicht mit deiner funktion, aber ich suche noch mal mit der grossen Suchmaschine mal sehen ob ich fündig werde.

                      mfg

                      Homematic CCU3,-Synology NAS 4TB,- 2 Sonos One,- Gigabyte N4500 8GB DDR4 2TB
                      Tapo C210 Cam
                      WLED Steuerung über lcdwiki

                      OliverIOO 1 Antwort Letzte Antwort
                      0
                      • matze55M matze55

                        @oliverio Ich habe doch nur die funktion aus deinem Post in die Abfrage gepackt.
                        Vorher:

                        date: new Date().toLocaleString('de-DE', opt),
                        

                        Nachher:

                        date: new Date().toLocaleString('de-DE', getRelativeDayLabel),
                        

                        3.Möglichkeit:

                        timestamp: new Date().toLocaleString('de-DE', getRelativeDayLabel),
                        

                        Ausgabe in JSON:

                        javascript.0	13:53:43.397	info	
                        
                        Eintrag zur JSON-Tabelle hinzugefügt: {"date":"26.8.2025, 13:53:43","device":"Echo-Devices","text":"Das Schlafzimmerlicht ist ausgeschalten","source":"alexa2.0"}
                        

                        Ich kann es drehen wie ich will aber mit der Anzeige klappt es nicht auch nicht mit deiner funktion, aber ich suche noch mal mit der grossen Suchmaschine mal sehen ob ich fündig werde.

                        mfg

                        OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        schrieb am zuletzt editiert von OliverIO
                        #14

                        @matze55

                        ja, weil du diverse Fehler hast.

                        1. Zeile 4, du hast die Funktion umgestellt, aber diverse Parameter sind nicht vorhanden. Hier mal zur besseren Visualisierung
                          61a96e9a-3a82-4af7-9b91-5bc8068210e7-image.png
                          Der Fehler entsteht, weil du die Variable today in Zeile 2 durch den Befehl toLocaleString (wobei da fehlen auch noch die Funktionsklammern) in einen String umwandeln wolltest, aber dadurch eine Funktionsreferenz zugewiesen hast.. Ein String und auch eine Funktionsreferenz besitzt die Funktion setHours nicht. Die besitzt nur ein Date-Objekt

                        2. Zeile 5: hier hast du aus der ursprünglichen Version den dateInput in date umbenannt. Allerdings wird die variable date nirgends belegt, also wird die auch schief gehen

                        3. nochmal zum Fehler in Zeile2, evtl trägt das auch zum besseren Verständnis von javascript bei.
                          in new Date().toLocaleString, addressierst du die Variable .toLocalString des Objekts Date. Diese Variable enthält eine Referenz auf die Funktion. Diese Referenz kann man auch anderen Variablen zu weisen. Da wird aber nix ausgeführt. Erst die () bei
                          new Date().toLocaleString() führ die Funktion auch aus.
                          Daher ist in today kein String, sondern eine Funktionsreferenz.

                        Aber bevor wir weitermachen, beantworte mir zuerst die Frage:
                        Woher kommt das Datum anhand du ermitteln willst ob es heute, gestern, etc. ist. Aktuell sehe ich es nirgends. Du sagst es kommt aus dem JSON.
                        Ich sehe oben zwar was mit jsonTable, dem fügst du ein newEntry hinzu, aber da nimmst du ja immer nur das aktuelle Datum, welches dann auch immer "heute" ergibt.

                        Versuche mal grob Schritt für Schritt zu beschreiben was du da erreichen möchtest. Zeige am besten auch mal ein Beispiel deines json

                        Zum Abschluss nochmal kurz darauf eingegangen.

                        Du hast einfach das umgestellt

                        date: new Date().toLocaleString('de-DE', getRelativeDayLabel),
                        

                        Wie oben schon geschrieben, warum?
                        Bereitgestellte Funktionen mit ihren Parameter sind wie ein Vertrag und du verpflichtest dich den Vertrag einzuhalten
                        Wenn du dir die Parameters der Funktion anschaust
                        https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString#parameters
                        Dann steht da locales und options
                        als locales hast du "de-DE", also passt
                        als options hast du den Inhalt von opts, der Inhalt passte. Nun willst du aber den Inhalt Rückgabewert von getRelativeDayLabel (auch hier wahrscheinlich die Funktionsklammern () vergessen, ansonsten wie oben). Aber was gibt diese Funktion zurück? "heute"? Das versteht die Funktion nicht. Die will da ein Objekt haben.

                        Hiermal der Link zum playground
                        https://playcode.io/javascript
                        Da kannst du aber nur einfachste Dinge testen. Komplex geht schon nicht oder ist schwierig.

                        Meine Adapter und Widgets
                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                        Links im Profil

                        matze55M 2 Antworten Letzte Antwort
                        0
                        • OliverIOO OliverIO

                          @matze55

                          ja, weil du diverse Fehler hast.

                          1. Zeile 4, du hast die Funktion umgestellt, aber diverse Parameter sind nicht vorhanden. Hier mal zur besseren Visualisierung
                            61a96e9a-3a82-4af7-9b91-5bc8068210e7-image.png
                            Der Fehler entsteht, weil du die Variable today in Zeile 2 durch den Befehl toLocaleString (wobei da fehlen auch noch die Funktionsklammern) in einen String umwandeln wolltest, aber dadurch eine Funktionsreferenz zugewiesen hast.. Ein String und auch eine Funktionsreferenz besitzt die Funktion setHours nicht. Die besitzt nur ein Date-Objekt

                          2. Zeile 5: hier hast du aus der ursprünglichen Version den dateInput in date umbenannt. Allerdings wird die variable date nirgends belegt, also wird die auch schief gehen

                          3. nochmal zum Fehler in Zeile2, evtl trägt das auch zum besseren Verständnis von javascript bei.
                            in new Date().toLocaleString, addressierst du die Variable .toLocalString des Objekts Date. Diese Variable enthält eine Referenz auf die Funktion. Diese Referenz kann man auch anderen Variablen zu weisen. Da wird aber nix ausgeführt. Erst die () bei
                            new Date().toLocaleString() führ die Funktion auch aus.
                            Daher ist in today kein String, sondern eine Funktionsreferenz.

                          Aber bevor wir weitermachen, beantworte mir zuerst die Frage:
                          Woher kommt das Datum anhand du ermitteln willst ob es heute, gestern, etc. ist. Aktuell sehe ich es nirgends. Du sagst es kommt aus dem JSON.
                          Ich sehe oben zwar was mit jsonTable, dem fügst du ein newEntry hinzu, aber da nimmst du ja immer nur das aktuelle Datum, welches dann auch immer "heute" ergibt.

                          Versuche mal grob Schritt für Schritt zu beschreiben was du da erreichen möchtest. Zeige am besten auch mal ein Beispiel deines json

                          Zum Abschluss nochmal kurz darauf eingegangen.

                          Du hast einfach das umgestellt

                          date: new Date().toLocaleString('de-DE', getRelativeDayLabel),
                          

                          Wie oben schon geschrieben, warum?
                          Bereitgestellte Funktionen mit ihren Parameter sind wie ein Vertrag und du verpflichtest dich den Vertrag einzuhalten
                          Wenn du dir die Parameters der Funktion anschaust
                          https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString#parameters
                          Dann steht da locales und options
                          als locales hast du "de-DE", also passt
                          als options hast du den Inhalt von opts, der Inhalt passte. Nun willst du aber den Inhalt Rückgabewert von getRelativeDayLabel (auch hier wahrscheinlich die Funktionsklammern () vergessen, ansonsten wie oben). Aber was gibt diese Funktion zurück? "heute"? Das versteht die Funktion nicht. Die will da ein Objekt haben.

                          Hiermal der Link zum playground
                          https://playcode.io/javascript
                          Da kannst du aber nur einfachste Dinge testen. Komplex geht schon nicht oder ist schwierig.

                          matze55M Offline
                          matze55M Offline
                          matze55
                          schrieb am zuletzt editiert von matze55
                          #15

                          @oliverio Danke erst mal für die Mühen, ich lasse es erst mal so es ist es wird sich irgenwann mal noch eine einfachere Lösung sich anbieten.

                          mfg

                          Homematic CCU3,-Synology NAS 4TB,- 2 Sonos One,- Gigabyte N4500 8GB DDR4 2TB
                          Tapo C210 Cam
                          WLED Steuerung über lcdwiki

                          1 Antwort Letzte Antwort
                          0
                          • OliverIOO OliverIO

                            @matze55

                            ja, weil du diverse Fehler hast.

                            1. Zeile 4, du hast die Funktion umgestellt, aber diverse Parameter sind nicht vorhanden. Hier mal zur besseren Visualisierung
                              61a96e9a-3a82-4af7-9b91-5bc8068210e7-image.png
                              Der Fehler entsteht, weil du die Variable today in Zeile 2 durch den Befehl toLocaleString (wobei da fehlen auch noch die Funktionsklammern) in einen String umwandeln wolltest, aber dadurch eine Funktionsreferenz zugewiesen hast.. Ein String und auch eine Funktionsreferenz besitzt die Funktion setHours nicht. Die besitzt nur ein Date-Objekt

                            2. Zeile 5: hier hast du aus der ursprünglichen Version den dateInput in date umbenannt. Allerdings wird die variable date nirgends belegt, also wird die auch schief gehen

                            3. nochmal zum Fehler in Zeile2, evtl trägt das auch zum besseren Verständnis von javascript bei.
                              in new Date().toLocaleString, addressierst du die Variable .toLocalString des Objekts Date. Diese Variable enthält eine Referenz auf die Funktion. Diese Referenz kann man auch anderen Variablen zu weisen. Da wird aber nix ausgeführt. Erst die () bei
                              new Date().toLocaleString() führ die Funktion auch aus.
                              Daher ist in today kein String, sondern eine Funktionsreferenz.

                            Aber bevor wir weitermachen, beantworte mir zuerst die Frage:
                            Woher kommt das Datum anhand du ermitteln willst ob es heute, gestern, etc. ist. Aktuell sehe ich es nirgends. Du sagst es kommt aus dem JSON.
                            Ich sehe oben zwar was mit jsonTable, dem fügst du ein newEntry hinzu, aber da nimmst du ja immer nur das aktuelle Datum, welches dann auch immer "heute" ergibt.

                            Versuche mal grob Schritt für Schritt zu beschreiben was du da erreichen möchtest. Zeige am besten auch mal ein Beispiel deines json

                            Zum Abschluss nochmal kurz darauf eingegangen.

                            Du hast einfach das umgestellt

                            date: new Date().toLocaleString('de-DE', getRelativeDayLabel),
                            

                            Wie oben schon geschrieben, warum?
                            Bereitgestellte Funktionen mit ihren Parameter sind wie ein Vertrag und du verpflichtest dich den Vertrag einzuhalten
                            Wenn du dir die Parameters der Funktion anschaust
                            https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString#parameters
                            Dann steht da locales und options
                            als locales hast du "de-DE", also passt
                            als options hast du den Inhalt von opts, der Inhalt passte. Nun willst du aber den Inhalt Rückgabewert von getRelativeDayLabel (auch hier wahrscheinlich die Funktionsklammern () vergessen, ansonsten wie oben). Aber was gibt diese Funktion zurück? "heute"? Das versteht die Funktion nicht. Die will da ein Objekt haben.

                            Hiermal der Link zum playground
                            https://playcode.io/javascript
                            Da kannst du aber nur einfachste Dinge testen. Komplex geht schon nicht oder ist schwierig.

                            matze55M Offline
                            matze55M Offline
                            matze55
                            schrieb am zuletzt editiert von
                            #16

                            @oliverio Hallo noch mal ich bin ja zufrieden mit dem Code aber da frage ich ja nochmal dumm,, da ich no ahnung habe von Javascript habe,, wenn ein Eintrag erfolgt in der JSON Tabelle zu einem Datum kann man 2 timestamp vergleichen und sie kennzeichnen. Ich frage nur ob es geht?

                            mfg

                            Homematic CCU3,-Synology NAS 4TB,- 2 Sonos One,- Gigabyte N4500 8GB DDR4 2TB
                            Tapo C210 Cam
                            WLED Steuerung über lcdwiki

                            OliverIOO 1 Antwort Letzte Antwort
                            0
                            • matze55M matze55

                              @oliverio Hallo noch mal ich bin ja zufrieden mit dem Code aber da frage ich ja nochmal dumm,, da ich no ahnung habe von Javascript habe,, wenn ein Eintrag erfolgt in der JSON Tabelle zu einem Datum kann man 2 timestamp vergleichen und sie kennzeichnen. Ich frage nur ob es geht?

                              mfg

                              OliverIOO Offline
                              OliverIOO Offline
                              OliverIO
                              schrieb am zuletzt editiert von
                              #17

                              @matze55

                              grundsätzlich geht alles.
                              die frage ist nur wo an welcher stelle ist eine Funktionalität sinnvoll.
                              Beschreibe mal och etwas genauer

                              • wie sieht die datenstruktur aktuell aus.
                              • welcher vergleich soll gemacht werden, = > < !=?
                              • vergleich mit was
                              • was für eine markierung? was soll mit der markierung passieren bzw. was bezweckst du damit?

                              Meine Adapter und Widgets
                              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                              Links im Profil

                              T 1 Antwort Letzte Antwort
                              0
                              • OliverIOO OliverIO

                                @matze55

                                grundsätzlich geht alles.
                                die frage ist nur wo an welcher stelle ist eine Funktionalität sinnvoll.
                                Beschreibe mal och etwas genauer

                                • wie sieht die datenstruktur aktuell aus.
                                • welcher vergleich soll gemacht werden, = > < !=?
                                • vergleich mit was
                                • was für eine markierung? was soll mit der markierung passieren bzw. was bezweckst du damit?
                                T Offline
                                T Offline
                                TT-Tom
                                schrieb am zuletzt editiert von TT-Tom
                                #18

                                @oliverio

                                ich glaube das Problem wird sein, das er die Tabelle nur erweitert. Um gestern, heute einzufügen, muss die Tabelle im Anschluß komplett überarbeitet werden. Sprich jedes Datum gegen das aktuelle geprüft werden.

                                Gruß Tom
                                https://github.com/tt-tom17
                                Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                                NSPanel Script Wiki
                                https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                NSPanel Adapter Wiki
                                https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                                1 Antwort Letzte Antwort
                                0
                                Antworten
                                • In einem neuen Thema antworten
                                Anmelden zum Antworten
                                • Älteste zuerst
                                • Neuste zuerst
                                • Meiste Stimmen


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                660

                                Online

                                32.6k

                                Benutzer

                                82.1k

                                Themen

                                1.3m

                                Beiträge
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Home
                                • Aktuell
                                • Tags
                                • Ungelesen 0
                                • Kategorien
                                • Unreplied
                                • Beliebt
                                • GitHub
                                • Docu
                                • Hilfe