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

Restar dos valores QString

Scheduled Pinned Locked Moved Unsolved Spanish
qstring
6 Posts 4 Posters 3.4k 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