From 036de1b0e6496ce28b1c5d6ad8fdaa54baa0a808 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 30 Apr 2014 02:34:30 +0200 Subject: [PATCH] refs #212, fixed parsing of time strings --- src/blackmisc/pqtime.cpp | 40 ++++++++++++++++++---------------------- src/blackmisc/pqtime.h | 2 +- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/blackmisc/pqtime.cpp b/src/blackmisc/pqtime.cpp index 9bb16ef93..f9ef0592d 100644 --- a/src/blackmisc/pqtime.cpp +++ b/src/blackmisc/pqtime.cpp @@ -6,35 +6,31 @@ namespace BlackMisc { CTime::CTime(const QTime &time) : CPhysicalQuantity(0, CTimeUnit::nullUnit()) { - int seconds = QTime().secsTo(time); + int seconds = QTime(0, 0, 0).secsTo(time); CTime converted(seconds, CTimeUnit::s()); - converted.setUnit(CTimeUnit::hms()); - this->set(converted); - } - - CTime::CTime(const QString &time) : CPhysicalQuantity(0, CTimeUnit::nullUnit()) - { - CTime parsed; - parsed.parseFromString(time); - this->set(parsed); + converted.switchUnit(CTimeUnit::hms()); + *this = converted; } void CTime::parseFromString(const QString &time) { - Q_ASSERT(time.length() == 5 || time.length() == 8); QTime t; - if (time.length() == 5) - t = QTime::fromString("hh:mm"); - else if (time.length() == 8) - t = QTime::fromString("hh:mm:ss"); - CTime parsed(t); - if (time.length() == 5) - parsed.setUnit(CTimeUnit::hrmin()); - else if (time.length() == 8) - parsed.setUnit(CTimeUnit::hms()); + const QString ts = time.trimmed(); + if (ts.contains(":") && (ts.length() == 8 || ts.length() == 5)) + { + if (ts.length() == 5) + t = QTime::fromString(ts, "hh:mm"); + else if (ts.length() == 8) + t = QTime::fromString(ts, "hh:mm:ss"); + CTime parsed(t); + if (ts.length() == 5) + parsed.switchUnit(CTimeUnit::hrmin()); + else if (ts.length() == 8) + parsed.switchUnit(CTimeUnit::hms()); + *this = parsed; + } else - parsed.setUnit(CTimeUnit::nullUnit()); // indicates invalid - this->set(parsed); + CPhysicalQuantity::parseFromString(ts); } QTime CTime::toQTime() const diff --git a/src/blackmisc/pqtime.h b/src/blackmisc/pqtime.h index bf9d07d64..17e873c57 100644 --- a/src/blackmisc/pqtime.h +++ b/src/blackmisc/pqtime.h @@ -29,7 +29,7 @@ namespace BlackMisc CTime(const QTime &time); //! \copydoc CPhysicalQuantity(const QString &unitString) - CTime(const QString &unitString) : CPhysicalQuantity(unitString) {} + CTime(const QString &unitString) : CPhysicalQuantity(0, CTimeUnit::nullUnit()) { this->parseFromString(unitString); } //! \copydoc CValueObject::toQVariant virtual QVariant toQVariant() const override { return QVariant::fromValue(*this); }