Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [GELÖST] Zeitdifferenz berechnen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

[GELÖST] Zeitdifferenz berechnen

Scheduled Pinned Locked Moved Skripten / Logik
7 Posts 2 Posters 729 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • peterk34P Offline
    peterk34P Offline
    peterk34
    wrote on last edited by peterk34
    #1

    Kann mir wer im Verständnis helfen?

    in folgendem Script errechne ich die Differenzen zwischen zwei Zeiten ... etwa 01:00 - 06:00 oder auch über Mitternacht also 23:00 - 3:00. Soweit so gut ...
    Wenn ich aber das Ergebnis mit formatDate formatiere oder mit getHours oder getMinutes berechne muss ich die Differenzzeit um genau eine Stunde vermindern damit es stimmt ... warum ?

    Besten Dank

    // berechnet und formatiert Differenz zwischen Zeiten
    // Zeiten immer in SS:mm oder SS angeben, Sekunden werden nicht berechnet
    // mögliche Formate: SS:mm (default), SS, mm, Min (Differenz in Minuten)
    {
        var myresult;
        DifferenzZeit = getDateObject(Zeit_bis).getTime() - getDateObject(Zeit_ab).getTime();
        if (isNaN(DifferenzZeit)) console.error('Berechnung der Zeitdifferenz nicht möglich. Angabe der Zeiten korrekt?');
        // Wenn Zeit bis kleiner Zeit ab ist
        // geht über Mitternacht
        if (DifferenzZeit < 0) DifferenzZeit = DifferenzZeit + 86400000;
        switch (Format) {
            case 'SS:mm':
                myresult = formatDate(getDateObject(DifferenzZeit - 3600000), "hh:mm");
                break
            case 'SS':
                myresult = getDateObject(DifferenzZeit - 3600000).getHours();
                break
            case 'mm':
                myresult = (getDateObject(DifferenzZeit - 3600000).getMinutes());
                break
            case 'Min':
                myresult = DifferenzZeit / 60000;
                break
            case 'MS':
                myresult = DifferenzZeit;
                break
            default:
                myresult = formatDate(getDateObject(DifferenzZeit - 3600000), "hh:mm");
                break
        }
        return myresult;
    }
    
    peterk34P paul53P 2 Replies Last reply
    0
    • peterk34P peterk34

      Kann mir wer im Verständnis helfen?

      in folgendem Script errechne ich die Differenzen zwischen zwei Zeiten ... etwa 01:00 - 06:00 oder auch über Mitternacht also 23:00 - 3:00. Soweit so gut ...
      Wenn ich aber das Ergebnis mit formatDate formatiere oder mit getHours oder getMinutes berechne muss ich die Differenzzeit um genau eine Stunde vermindern damit es stimmt ... warum ?

      Besten Dank

      // berechnet und formatiert Differenz zwischen Zeiten
      // Zeiten immer in SS:mm oder SS angeben, Sekunden werden nicht berechnet
      // mögliche Formate: SS:mm (default), SS, mm, Min (Differenz in Minuten)
      {
          var myresult;
          DifferenzZeit = getDateObject(Zeit_bis).getTime() - getDateObject(Zeit_ab).getTime();
          if (isNaN(DifferenzZeit)) console.error('Berechnung der Zeitdifferenz nicht möglich. Angabe der Zeiten korrekt?');
          // Wenn Zeit bis kleiner Zeit ab ist
          // geht über Mitternacht
          if (DifferenzZeit < 0) DifferenzZeit = DifferenzZeit + 86400000;
          switch (Format) {
              case 'SS:mm':
                  myresult = formatDate(getDateObject(DifferenzZeit - 3600000), "hh:mm");
                  break
              case 'SS':
                  myresult = getDateObject(DifferenzZeit - 3600000).getHours();
                  break
              case 'mm':
                  myresult = (getDateObject(DifferenzZeit - 3600000).getMinutes());
                  break
              case 'Min':
                  myresult = DifferenzZeit / 60000;
                  break
              case 'MS':
                  myresult = DifferenzZeit;
                  break
              default:
                  myresult = formatDate(getDateObject(DifferenzZeit - 3600000), "hh:mm");
                  break
          }
          return myresult;
      }
      
      peterk34P Offline
      peterk34P Offline
      peterk34
      wrote on last edited by
      #2

      könnte das an der Sommerzeit liegen?

      1 Reply Last reply
      0
      • peterk34P peterk34

        Kann mir wer im Verständnis helfen?

        in folgendem Script errechne ich die Differenzen zwischen zwei Zeiten ... etwa 01:00 - 06:00 oder auch über Mitternacht also 23:00 - 3:00. Soweit so gut ...
        Wenn ich aber das Ergebnis mit formatDate formatiere oder mit getHours oder getMinutes berechne muss ich die Differenzzeit um genau eine Stunde vermindern damit es stimmt ... warum ?

        Besten Dank

        // berechnet und formatiert Differenz zwischen Zeiten
        // Zeiten immer in SS:mm oder SS angeben, Sekunden werden nicht berechnet
        // mögliche Formate: SS:mm (default), SS, mm, Min (Differenz in Minuten)
        {
            var myresult;
            DifferenzZeit = getDateObject(Zeit_bis).getTime() - getDateObject(Zeit_ab).getTime();
            if (isNaN(DifferenzZeit)) console.error('Berechnung der Zeitdifferenz nicht möglich. Angabe der Zeiten korrekt?');
            // Wenn Zeit bis kleiner Zeit ab ist
            // geht über Mitternacht
            if (DifferenzZeit < 0) DifferenzZeit = DifferenzZeit + 86400000;
            switch (Format) {
                case 'SS:mm':
                    myresult = formatDate(getDateObject(DifferenzZeit - 3600000), "hh:mm");
                    break
                case 'SS':
                    myresult = getDateObject(DifferenzZeit - 3600000).getHours();
                    break
                case 'mm':
                    myresult = (getDateObject(DifferenzZeit - 3600000).getMinutes());
                    break
                case 'Min':
                    myresult = DifferenzZeit / 60000;
                    break
                case 'MS':
                    myresult = DifferenzZeit;
                    break
                default:
                    myresult = formatDate(getDateObject(DifferenzZeit - 3600000), "hh:mm");
                    break
            }
            return myresult;
        }
        
        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by paul53
        #3

        @peterk34 sagte: Wenn ich aber das Ergebnis mit formatDate formatiere

        ... dann funktioniert es, denn formatDate() berücksichtig, dass kleine Werte (vor 01.01.2000) Differenzen sind. Bei großen Werten wird die Zeitzone berücksichtigt:

        Bild_2022-10-14_120054563.png

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        peterk34P 1 Reply Last reply
        0
        • paul53P paul53

          @peterk34 sagte: Wenn ich aber das Ergebnis mit formatDate formatiere

          ... dann funktioniert es, denn formatDate() berücksichtig, dass kleine Werte (vor 01.01.2000) Differenzen sind. Bei großen Werten wird die Zeitzone berücksichtigt:

          Bild_2022-10-14_120054563.png

          peterk34P Offline
          peterk34P Offline
          peterk34
          wrote on last edited by
          #4

          @paul53

          cool

          var diff = (getDateObject(end).getTime()-getDateObject(start).getTime());
          log (formatDate(diff,'hh:mm'));
          log (formatDate(getDateObject(diff),'hh:mm'));
          

          ergibt ...

          a6a6d725-b741-40db-a013-e672538b00ef-image.png

          macht mans so wie du, passts ...
          macht mans im blockly wirds wie das zweite Ergebnis

          paul53P peterk34P 2 Replies Last reply
          0
          • peterk34P peterk34

            @paul53

            cool

            var diff = (getDateObject(end).getTime()-getDateObject(start).getTime());
            log (formatDate(diff,'hh:mm'));
            log (formatDate(getDateObject(diff),'hh:mm'));
            

            ergibt ...

            a6a6d725-b741-40db-a013-e672538b00ef-image.png

            macht mans so wie du, passts ...
            macht mans im blockly wirds wie das zweite Ergebnis

            paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by
            #5

            @peterk34 sagte: macht mans im blockly wirds wie das zweite Ergebnis

            Ja, das ist bekannt.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            peterk34P 1 Reply Last reply
            0
            • peterk34P peterk34

              @paul53

              cool

              var diff = (getDateObject(end).getTime()-getDateObject(start).getTime());
              log (formatDate(diff,'hh:mm'));
              log (formatDate(getDateObject(diff),'hh:mm'));
              

              ergibt ...

              a6a6d725-b741-40db-a013-e672538b00ef-image.png

              macht mans so wie du, passts ...
              macht mans im blockly wirds wie das zweite Ergebnis

              peterk34P Offline
              peterk34P Offline
              peterk34
              wrote on last edited by peterk34
              #6

              habs jetzt so umgebaut da bei getMinutes() gehts ohne das getDateObject nicht ..

                  DifferenzZeit = getDateObject(Zeit_bis).getTime() - getDateObject(Zeit_ab).getTime();
                  if (DifferenzZeit < 0) DifferenzZeit = DifferenzZeit + 86400000;
                  if (new Date().getTimezoneOffset() == -120) sommerzeit = 3600000;
                  else sommerzeit = 0;
                  switch (Format) {
                      case 'SS:mm':
                          myresult = formatDate(getDateObject(DifferenzZeit - sommerzeit), "hh:mm");
                          break
                      case 'SS':
                          myresult = getDateObject(DifferenzZeit - sommerzeit).getHours();
                          break
                      case 'mm':
                          myresult = getDateObject(DifferenzZeit - sommerzeit).getMinutes();
              
              1 Reply Last reply
              0
              • paul53P paul53

                @peterk34 sagte: macht mans im blockly wirds wie das zweite Ergebnis

                Ja, das ist bekannt.

                peterk34P Offline
                peterk34P Offline
                peterk34
                wrote on last edited by
                #7

                @paul53

                Dankeschööön

                1 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate

                603

                Online

                32.7k

                Users

                82.3k

                Topics

                1.3m

                Posts
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                ioBroker Community 2014-2025
                logo
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • Home
                • Recent
                • Tags
                • Unread 0
                • Categories
                • Unreplied
                • Popular
                • GitHub
                • Docu
                • Hilfe