]> git.sur5r.net Git - minitube/commitdiff
Smart date formatting
authorFlavio Tordini <flavio.tordini@gmail.com>
Sun, 2 Aug 2015 19:54:55 +0000 (21:54 +0200)
committerFlavio Tordini <flavio.tordini@gmail.com>
Sun, 2 Aug 2015 19:54:55 +0000 (21:54 +0200)
src/datautils.cpp
src/datautils.h

index 36811b03cdf5c174ab1879c6004840224dfbb367..dbaf3af74386afdd8fe10234bf2e7a8a680c4e7b 100644 (file)
@@ -79,3 +79,25 @@ uint DataUtils::parseIsoPeriod(const QString &isoPeriod) {
     uint period = ((days * 24 + hours) * 60 + minutes) * 60 + seconds;
     return period;
 }
+
+QString DataUtils::formatDateTime(const QDateTime &dt) {
+    const qint64 seconds = dt.secsTo(QDateTime::currentDateTime());
+    QString s;
+    int f = 60;
+    if (seconds < f) {
+        s = qApp->tr("Just now");
+    } else if (seconds < (f *= 60)) {
+        s = qApp->tr("%n minute(s) ago", "", seconds / 60);
+    } else if (seconds < (f *= 24)) {
+        s = qApp->tr("%n hour(s) ago", "", seconds / (60*60));
+    } else if (seconds < (f *= 7)) {
+        s = qApp->tr("%n day(s) ago", "", seconds / (60*60*24));
+    } else if (seconds < (f = 60*60*24*30)) {
+        s = qApp->tr("%n weeks(s) ago", "", seconds / (60*60*24*7));
+    } else if (seconds < (f = 60*60*24*365)) {
+        s = qApp->tr("%n month(s) ago", "", seconds / (60*60*24*30));
+    } else {
+        s = dt.toString(Qt::DefaultLocaleShortDate);
+    }
+    return s;
+}
index e5a8de08cbe3ec761876f14df349173d17c18876..bce1ca808590e2582debdb81776644a13a9793e3 100644 (file)
@@ -10,6 +10,7 @@ public:
     static QString regioneCode(const QLocale &locale);
     static QString systemRegioneCode();
     static uint parseIsoPeriod(const QString &isoPeriod);
+    static QString formatDateTime(const QDateTime &dt);
 
 private:
     DataUtils() { }