Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Rechnen mit Timestamps und Datenpunkten

    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

    Rechnen mit Timestamps und Datenpunkten

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

      Hallo, ich möchte einen Timestamp in einen Datenpunkt schreiben und später die Differenz zum aktuellen Datum ermitteln.
      Eigentlich sollte das kein Problem sein, aber irgendwie habe ich ein Problem.

      Anlegen Datenpunkt:

      createState(folderNameScripte + '.' + Room + ".Lastvalue_changed","15",{name: "Lastvalue_changed",  type: 'string', role: 'date'}, function () {});
      

      Schreiben des aktuellen Datums in den Timestamp

      setState(folderNameScripte + '.' + Room + ".Lastvalue_changed", new Date(), true);
      

      ... dabei bekomme ich aber eine Fehlermeldung:

      You are assigning a object to the state "0_userdata.0.scripte.Wohnzimmer_1.Lastvalue_changed" which expects a string. Please fix your code to use a string or change the state type to object. This warning might become an error in future versions.
      

      An der Stelle habe ich jetzt ein Problem. Ich habe nicht gefunden das ich einen Datenpunkt als "Datum Element" anlegen könnte. Damit bleibt nur die Ablage als String.

      Deswegen habe ich den setstate geändert:

      setState(folderNameScripte + '.' + Room + ".Lastvalue_changed", new Date().toLocaleTimeString(), true); 
      

      Soweit funktioniert das ganze jetzt ohne Fehlermeldung.

      Allerdings liefert mir ein

      new Date() - getState(folderNameScripte + '.' + room + ".Lastvalue_changed").val
      

      NaN als Ergebnis anstatt einer Zeitdifferenz.

      Was kann ich tun?

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

        @warhammer73 sagte: NaN als Ergebnis anstatt einer Zeitdifferenz.

        Date.now() - new Date(getState(folderNameScripte + '.' + room + ".Lastvalue_changed").val).getTime(); // Differenz in ms
        

        Anmerkung: new Date() liefert ein Objekt, getState(id).val einen String. Mit beidem kann man nicht rechnen.

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

          @paul53 said in Rechnen mit Timestamps und Datenpunkten:

          Date.now() - new Date(getState(folderNameScripte + '.' + room + ".Lastvalue_changed").val).getTime();

          Das ändert am NaN als Ergebnis aber leider nichts. 😞
          Schon

          new Date(getState(folderNameScripte + '.' + room + ".Lastvalue_changed").val).getTime();
          

          liefert NaN

          Vielleicht auch nicht verwunderlich, denn ein:

          getState(folderNameScripte + '.' + room + ".Lastvalue_changed").val
          

          liefert nur die Uhrzeit (10:12:10) als Ergebnis. Problem scheint also das setState erstmal zu sein.

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

            @warhammer73 sagte: liefert nur die Uhrzeit

            Dann nimm bei setState()

            new Date().toString()
            

            oder

            formatDate(new Date(), 'YYYY-MM-DD hh:mm:ss')
            
            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            589
            Online

            31.9k
            Users

            80.2k
            Topics

            1.3m
            Posts

            2
            4
            191
            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