Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. Restar dos valores QString
Qt 6.11 is out! See what's new in the release blog

Restar dos valores QString

Scheduled Pinned Locked Moved Unsolved Spanish
qstring
6 Posts 4 Posters 4.0k 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.
  • AlbertoA Offline
    AlbertoA Offline
    Alberto
    wrote on last edited by
    #1

    Hola,
    Estoy intentando restar dos horas.
    QString 1 = "11:00";
    QString 2 = "10:00";

    Me gustaría guardar el resultado de (11:00 - 10:00) dentro de otro QString.

    ¿Alguién sabe como podría hacerlo?

    Gracias por contestar.

    1 Reply Last reply
    0
    • juankiJ Offline
      juankiJ Offline
      juanki
      Moderators
      wrote on last edited by
      #2

      Hola

      ¿Porqué no usas QTime?

      Saludos

      Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
      Procura escribir correctamente y sin faltas de ortografía.

      Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

      AlbertoA 1 Reply Last reply
      0
      • juankiJ juanki

        Hola

        ¿Porqué no usas QTime?

        Saludos

        AlbertoA Offline
        AlbertoA Offline
        Alberto
        wrote on last edited by
        #3

        @juanki

        He hecho esto:

        QTime hour_1 = QTime::fromString(sHour_1,"hh:mm");
        QTime hour_2 = QTime::fromString(sHour_2,"hh:mm");
        
        qDebug()<<hour_2;
        
        int secs = hour_2.second();
        
        qDebug()<<secs;
        
        QTime result = hour_1.addSecs(-secs);
        QString result2 =result.toString("hh:mm");
        
        qDebug()<<result;
        qDebug()<<result2;
        

        Pero el resultado es este:

        qDebug()<<sHour_1;
        "11:00"

        qDebug()<<sHour_2;
        "10:00"

        qDebug()<<hour_2;
        QTime("10:00:00.000")

        qDebug()<<secs;
        0

        qDebug()<<result;
        QTime("11:00:00.000")

        qDebug()<<result2;
        "11:00"

        1 Reply Last reply
        0
        • juankiJ Offline
          juankiJ Offline
          juanki
          Moderators
          wrote on last edited by juanki
          #4

          Hola

          Lo que te ocurre es que el método second te da los segundos que tiene la hora que le diste al QTime, en tu caso pusiste la hora "11:00:00", que son las 11, 0 minutos y 0 segundos, de ahí que te de 0.

          La clase QTime tiene otro método, msecsSinceStartOfDay, que te da los milisegundos que hay desde el inicio del día "00:00:00" hasta la hora que pusiste en el QTime.

          Creo que ese método sí puedes usarlo para restar las dos horas:

          QTime hora1 = QTime::fromString("11:00", "hh:mm");
          QTime hora2 = QTime::fromString("10:00", "hh:mm");
          
          qDebug() << "hora 1:" << hora1;
          qDebug() << "hora 2:" << hora2;
          
          qDebug() << "Segundos hora 1:" << hora1.msecsSinceStartOfDay() / 1000;
          qDebug() << "Segundos hora 2:" << hora2.msecsSinceStartOfDay() / 1000;
          
          qDebug() << "diferencia:" << (hora1.msecsSinceStartOfDay() / 1000) - (hora2.msecsSinceStartOfDay() / 1000);
          

          Un saludo

          Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
          Procura escribir correctamente y sin faltas de ortografía.

          Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

          1 Reply Last reply
          0
          • K Offline
            K Offline
            kapyderi
            wrote on last edited by kapyderi
            #5

            Pues es facil

            (Antes lo pasas a int con un split y un QStrinList o lo coges, como en el ejemplo, de un QTimeEdit).

            int Segundos1 = ui->timeEdit->time().second();
            int Segundos2 = ui->timeEdit_2->time().second();
            int Minutos1 = ui->timeEdit->time().minute();
            int Minutos2 = ui->timeEdit_2->time().minute();
            int Hora1 = ui->timeEdit->time().hour();
            int Hora2 = ui->timeEdit_2->time().hour();
            int TotalSegundos1 = (Hora1 * 3600) + (Minutos1 * 60) + Segundos1;
            int TotalSegundos2 = (Hora2 * 3600) + (Minutos2 * 60) + Segundos2;
            int Resto = TotalSegundos1 - TotalSegundos2;
            int horas, minutos, segundos;
            horas = (Resto / 3600);
            minutos = ((Resto - horas * 3600) / 60);
            segundos = Resto - (horas * 3600 + minutos * 60);
            QString Hour, Minutes, Seconds;
            if (horas <= 10)
            Hour = "0"+QString::number(horas);
            else
            Hour = QString::number(horas);
            if (minutos <= 10)
            Minutes = "0"+QString::number(minutos);
            else
            Minutes = QString::number(minutos);
            if (segundos <= 10)
            Seconds = "0"+QString::number(segundos);
            else
            Seconds = QString::number(segundos);
            ui->lineEdit_67->setText(Hour+":"+Minutes+":"+Seconds);

            Mas o menos.

            Saludos!!!

            1 Reply Last reply
            0
            • JoanJinglesJ Offline
              JoanJinglesJ Offline
              JoanJingles
              wrote on last edited by
              #6

              Primero tendrás que convertir estas horas a números enteros. Luego podrás calcular y posteriormente sacar el valor en texto usando QString::number(int);

              Puedes usar QString.split para separar las horas y minutos y hacer la resta por separado. Luego, para juntarlo puedes hacer esto: QString(QString::number(int) + ":" + QString::number(int));

              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