DateTime: Fix time parsing for some time zones

This commit is contained in:
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() : IntegrationPluginDateTime::IntegrationPluginDateTime() :
m_timer(nullptr), m_timer(nullptr),
m_todayDevice(nullptr), m_todayDevice(nullptr),
m_timeZone(QTimeZone(QTimeZone::systemTimeZoneId())), m_timeZone(QTimeZone::systemTimeZoneId()),
m_dusk(QDateTime()), m_dusk(QDateTime()),
m_sunrise(QDateTime()), m_sunrise(QDateTime()),
m_noon(QDateTime()), m_noon(QDateTime()),
@ -288,12 +288,11 @@ void IntegrationPluginDateTime::processTimesData(const QByteArray &data)
QString duskString = result.value("civil_twilight_end").toString(); QString duskString = result.value("civil_twilight_end").toString();
// calculate the times in each alarm // calculate the times in each alarm
m_dawn = QDateTime(QDate::currentDate(), QTime::fromString(dawnString, "h:mm:ss AP"), Qt::UTC).toTimeZone(m_timeZone);
m_dawn = QDateTime(QDate::currentDate(), parseTime(dawnString), Qt::UTC).toTimeZone(m_timeZone); m_sunrise = QDateTime(QDate::currentDate(), QTime::fromString(sunriseString, "h:mm:ss AP"), Qt::UTC).toTimeZone(m_timeZone);
m_sunrise = QDateTime(QDate::currentDate(), parseTime(sunriseString), Qt::UTC).toTimeZone(m_timeZone); m_noon = QDateTime(QDate::currentDate(), QTime::fromString(noonString, "h:mm:ss AP"), Qt::UTC).toTimeZone(m_timeZone);
m_noon = QDateTime(QDate::currentDate(), parseTime(noonString), Qt::UTC).toTimeZone(m_timeZone); m_sunset = QDateTime(QDate::currentDate(), QTime::fromString(sunsetString, "h:mm:ss AP"), Qt::UTC).toTimeZone(m_timeZone);
m_sunset = QDateTime(QDate::currentDate(), parseTime(sunsetString), Qt::UTC).toTimeZone(m_timeZone); m_dusk = QDateTime(QDate::currentDate(), QTime::fromString(duskString, "h:mm:ss AP"), Qt::UTC).toTimeZone(m_timeZone);
m_dusk = QDateTime(QDate::currentDate(), parseTime(duskString), Qt::UTC).toTimeZone(m_timeZone);
qCDebug(dcDateTime) << " dawn :" << m_dawn.toString() << dawnString; qCDebug(dcDateTime) << " dawn :" << m_dawn.toString() << dawnString;
qCDebug(dcDateTime) << " sunrise :" << m_sunrise.toString() << sunriseString; qCDebug(dcDateTime) << " sunrise :" << m_sunrise.toString() << sunriseString;
@ -305,18 +304,6 @@ void IntegrationPluginDateTime::processTimesData(const QByteArray &data)
updateTimes(); 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() void IntegrationPluginDateTime::onNetworkReplayFinished()
{ {
QNetworkReply *reply = static_cast<QNetworkReply *>(sender()); QNetworkReply *reply = static_cast<QNetworkReply *>(sender());

View File

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