Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to work with time intervals in Qt?
QtWS25 Last Chance

How to work with time intervals in Qt?

Scheduled Pinned Locked Moved Solved General and Desktop
15 Posts 7 Posters 3.8k Views
  • 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.
  • EddyE Offline
    EddyE Offline
    Eddy
    wrote on last edited by Eddy
    #5

    a long time ago @Andre was working on that.

    I found the thread here on the forum:
    https://forum.qt.io/topic/3160/qtimespan-interest

    hope it helps

    Qt Certified Specialist
    www.edalsolutions.be

    R 1 Reply Last reply
    0
    • R r3d9u11

      Re: Time Span Calculation

      Hello. Is there any class to work with time intervals in Qt ? Something like a TimeSpan in C#. I can't find any information about it, yet.

      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by JonB
      #6

      @r3d9u11
      TimeSpan in C# has nothing to do with clocks/timers/timeouts/signals, it's just a data type for manipulating time periods, which happens to go down to milliseconds/ticks.

      If you are in C++, given @SGaist's link to std::chrono and its members like duration, it hardly seems worth worrying about/waiting for Qt to implement anything when you have that to use. If you're using Python, the language has library datetime.timedelta.

      R 1 Reply Last reply
      3
      • EddyE Eddy

        a long time ago @Andre was working on that.

        I found the thread here on the forum:
        https://forum.qt.io/topic/3160/qtimespan-interest

        hope it helps

        R Offline
        R Offline
        r3d9u11
        wrote on last edited by
        #7

        @eddy Thank you, I watched this topic, too (so, this topic is just a continuing of that discussion)

        1 Reply Last reply
        0
        • sierdzioS sierdzio

          There is no such class. But parts of the functionality you can get with QDateTime::daysTo() and similar.

          For smaller time spans, you can also check QTimer, QElapsedTimer, QDeadlineTimer.

          R Offline
          R Offline
          r3d9u11
          wrote on last edited by r3d9u11
          #8

          @sierdzio Thak you, however something wrong with QDateTime. It work incorrectly when date is zero.
          For example:

          #include <QCoreApplication>
          #include <QDateTime>
          #include <QDebug>
          
          void print_date(const QDateTime& qdt)
          {
              qDebug() << qdt.date().toString("yyyy:MM:dd") << "-" << qdt.time().toString("hh:mm:ss");
          }
          
          int main ()
          {
              QDateTime qdt(QDate(0, 0, 0), QTime(0, 0, 0));
              print_date(qdt);
          
              qdt = qdt.addSecs(5);
              print_date(qdt);
          
              qdt = qdt.addMSecs(3600003);
              print_date(qdt);
          
              return 0;
          }
          

          will output:

          "" - "00:00:00"
          "" - ""
          "" - ""
          Press <RETURN> to close this window...
          

          In that time, if we change date to (1,1,1) it will work fine:

          ...
          QDateTime qdt(QDate(0, 0, 0), QTime(0, 0, 0));
          ...
          

          result:

          "0001:01:01" - "00:00:00"
          "0001:01:01" - "00:00:05"
          "0001:01:01" - "01:00:05"
          Press <RETURN> to close this window...
          

          Maybe I don't understand something ?

          Tested with Qt 5.9.7 and Qt 5.12.4

          1 Reply Last reply
          0
          • JonBJ JonB

            @r3d9u11
            TimeSpan in C# has nothing to do with clocks/timers/timeouts/signals, it's just a data type for manipulating time periods, which happens to go down to milliseconds/ticks.

            If you are in C++, given @SGaist's link to std::chrono and its members like duration, it hardly seems worth worrying about/waiting for Qt to implement anything when you have that to use. If you're using Python, the language has library datetime.timedelta.

            R Offline
            R Offline
            r3d9u11
            wrote on last edited by r3d9u11
            #9

            @jonb Hi, thak you for your notes. I'm on C++ and I don't need any related to timers,timeouts,signals. I just need to manipulate time interval. For example add milliseconds and finally get time interval on hours/minutes, or substract some seconds and finally get resulted time interval.

            Well I implemented my own class QTimeSpan, it uses alot dividing opetions and remainder of the division but it is easy to use, implemented for the short time and does needed functions :D

            However, QDateTime can do all these functions, but I faced with some strange but (as I noted below).

            1 Reply Last reply
            1
            • SGaistS SGaist

              Hi,

              IIRC, there was at some point discussions about a class named QTimeSpan. You have to search for it.

              Or maybe std::chrono may have what you want.

              R Offline
              R Offline
              r3d9u11
              wrote on last edited by
              #10

              @sgaist thank you fot hint. I'll read about it, I am a supporter of "standard" functions and methods (and hate to do own vechicles)

              1 Reply Last reply
              0
              • R Offline
                R Offline
                r3d9u11
                wrote on last edited by r3d9u11
                #11

                Thank you all for answers and hints.

                Well, finally there is 3 ways to work with time intervals in Qt/C++:

                1. Qt-way: You can use QDateTime
                2. C++-way: You can use std::chrono
                3. Funny and ugly way: You can produce your own vehicle to implement functions what do you need

                I think this theme can be closed.

                1 Reply Last reply
                0
                • Christian EhrlicherC Online
                  Christian EhrlicherC Online
                  Christian Ehrlicher
                  Lifetime Qt Champion
                  wrote on last edited by
                  #12

                  @r3d9u11 said in How to work with time intervals in Qt?:

                  but I was facing with some strange behavior or bugs

                  You simply didn't read the documentation: https://doc.qt.io/qt-5/qdate.html#QDate-2 : "Year 0 is invalid."

                  Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                  Visit the Qt Academy at https://academy.qt.io/catalog

                  R 1 Reply Last reply
                  2
                  • Christian EhrlicherC Christian Ehrlicher

                    @r3d9u11 said in How to work with time intervals in Qt?:

                    but I was facing with some strange behavior or bugs

                    You simply didn't read the documentation: https://doc.qt.io/qt-5/qdate.html#QDate-2 : "Year 0 is invalid."

                    R Offline
                    R Offline
                    r3d9u11
                    wrote on last edited by r3d9u11
                    #13

                    @christian-ehrlicher you're right, I didn't do it completely (because mostly I read about QDateTime).
                    It seems like stick in the wheel. I hope there is some really important reasons to exclude zero from valid values.

                    In that case there is only two ways: clean C++ and own vehicle.

                    1 Reply Last reply
                    0
                    • Christian EhrlicherC Online
                      Christian EhrlicherC Online
                      Christian Ehrlicher
                      Lifetime Qt Champion
                      wrote on last edited by
                      #14

                      @r3d9u11 said in How to work with time intervals in Qt?:

                      I hope there is some really important reasons to exclude zero from valid values.

                      Yes, read the documentation (as I said before): https://doc.qt.io/qt-5/qdate.html#remarks

                      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                      Visit the Qt Academy at https://academy.qt.io/catalog

                      R 1 Reply Last reply
                      2
                      • Christian EhrlicherC Christian Ehrlicher

                        @r3d9u11 said in How to work with time intervals in Qt?:

                        I hope there is some really important reasons to exclude zero from valid values.

                        Yes, read the documentation (as I said before): https://doc.qt.io/qt-5/qdate.html#remarks

                        R Offline
                        R Offline
                        r3d9u11
                        wrote on last edited by r3d9u11
                        #15

                        @christian-ehrlicher Yeah, I read it after was commenting, my bad :D
                        Thanks, again.

                        Finally I did that task with QDateTime and have got results like (example here):

                        "02:30:01.205"
                        Press <RETURN> to close this window...
                        

                        or

                        "146:30:01.205"
                        Press <RETURN> to close this window...
                        
                        1 Reply Last reply
                        0

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved