DateTime: Fix time parsing for some time zones

master
Michael Zanetti 2022-04-07 23:11:39 +02:00
parent 750afb77f9
commit 2522f41488
2 changed files with 6 additions and 21 deletions

View File

@ -41,7 +41,7 @@
IntegrationPluginDateTime::IntegrationPluginDateTime() :
m_timer(nullptr),
m_todayDevice(nullptr),
m_timeZone(QTimeZone(QTimeZone::systemTimeZoneId())),
m_timeZone(QTimeZone::systemTimeZoneId()),
m_dusk(QDateTime()),
m_sunrise(QDateTime()),
m_noon(QDateTime()),
@ -288,12 +288,11 @@ void IntegrationPluginDateTime::processTimesData(const QByteArray &data)
QString duskString = result.value("civil_twilight_end").toString();
// calculate the times in each alarm
m_dawn = QDateTime(QDate::currentDate(), parseTime(dawnString), Qt::UTC).toTimeZone(m_timeZone);
m_sunrise = QDateTime(QDate::currentDate(), parseTime(sunriseString), Qt::UTC).toTimeZone(m_timeZone);
m_noon = QDateTime(QDate::currentDate(), parseTime(noonString), Qt::UTC).toTimeZone(m_timeZone);
m_sunset = QDateTime(QDate::currentDate(), parseTime(sunsetString), Qt::UTC).toTimeZone(m_timeZone);
m_dusk = QDateTime(QDate::currentDate(), parseTime(duskString), Qt::UTC).toTimeZone(m_timeZone);
m_dawn = QDateTime(QDate::currentDate(), QTime::fromString(dawnString, "h:mm:ss AP"), Qt::UTC).toTimeZone(m_timeZone);
m_sunrise = QDateTime(QDate::currentDate(), QTime::fromString(sunriseString, "h:mm:ss AP"), Qt::UTC).toTimeZone(m_timeZone);
m_noon = QDateTime(QDate::currentDate(), QTime::fromString(noonString, "h:mm:ss AP"), Qt::UTC).toTimeZone(m_timeZone);
m_sunset = QDateTime(QDate::currentDate(), QTime::fromString(sunsetString, "h:mm:ss AP"), Qt::UTC).toTimeZone(m_timeZone);
m_dusk = QDateTime(QDate::currentDate(), QTime::fromString(duskString, "h:mm:ss AP"), Qt::UTC).toTimeZone(m_timeZone);
qCDebug(dcDateTime) << " dawn :" << m_dawn.toString() << dawnString;
qCDebug(dcDateTime) << " sunrise :" << m_sunrise.toString() << sunriseString;
@ -305,18 +304,6 @@ void IntegrationPluginDateTime::processTimesData(const QByteArray &data)
updateTimes();
}
QTime IntegrationPluginDateTime::parseTime(const QString &timeString) const
{
bool isPm = timeString.endsWith(" PM");
QString tmp = QString(timeString).remove(QRegExp("[ APM]*"));
QStringList parts = tmp.split(":");
if (parts.count() != 3) {
qCWarning(dcDateTime()) << "Error parsing timeString:" << timeString;
return QTime();
}
return QTime(parts.first().toInt(), parts.at(1).toInt(), parts.last().toInt()).addSecs(isPm ? 60 * 60 * 12 : 0);
}
void IntegrationPluginDateTime::onNetworkReplayFinished()
{
QNetworkReply *reply = static_cast<QNetworkReply *>(sender());

View File

@ -83,8 +83,6 @@ private:
void getTimes(const QString &latitude, const QString &longitude);
void processTimesData(const QByteArray &data);
QTime parseTime(const QString &timeString) const;
signals:
void dusk();
void sunset();