summaryrefslogtreecommitdiffstats
path: root/logic/minecraft/ParseUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'logic/minecraft/ParseUtils.cpp')
-rw-r--r--logic/minecraft/ParseUtils.cpp34
1 files changed, 22 insertions, 12 deletions
diff --git a/logic/minecraft/ParseUtils.cpp b/logic/minecraft/ParseUtils.cpp
index 8fccf403..473ca1de 100644
--- a/logic/minecraft/ParseUtils.cpp
+++ b/logic/minecraft/ParseUtils.cpp
@@ -1,23 +1,33 @@
#include <QDateTime>
#include <QString>
#include "ParseUtils.h"
+#include <QDebug>
QDateTime timeFromS3Time(QString str)
{
return QDateTime::fromString(str, Qt::ISODate);
}
-bool parse_timestamp (const QString & raw, QString & save_here, QDateTime & parse_here)
+QString timeToS3Time(QDateTime time)
{
- save_here = raw;
- if (save_here.isEmpty())
- {
- return false;
- }
- parse_here = timeFromS3Time(save_here);
- if (!parse_here.isValid())
- {
- return false;
- }
- return true;
+ // this all because Qt can't format timestamps right.
+ int offsetRaw = time.offsetFromUtc();
+ bool negative = offsetRaw < 0;
+ int offsetAbs = std::abs(offsetRaw);
+
+ int offsetSeconds = offsetAbs % 60;
+ offsetAbs -= offsetSeconds;
+
+ int offsetMinutes = offsetAbs % 3600;
+ offsetAbs -= offsetMinutes;
+ offsetMinutes /= 60;
+
+ int offsetHours = offsetAbs / 3600;
+
+ QString raw = time.toString("yyyy-MM-ddTHH:mm:ss");
+ raw += (negative ? QChar('-') : QChar('+'));
+ raw += QString("%1").arg(offsetHours, 2, 10, QChar('0'));
+ raw += ":";
+ raw += QString("%1").arg(offsetMinutes, 2, 10, QChar('0'));
+ return raw;
}