1 #include "kmime_dateformatter.h"
2 #include "kmime_header_parsing.h"
3 #include <QDebug>
4 using namespace KMime;
5 
6 #ifndef Q_OS_WIN
initLocale()7 void initLocale()
8 {
9     setenv("LC_ALL", "en_US.utf-8", 1);
10     setenv("TZ", "UTC", 1);
11 }
12 
Q_CONSTRUCTOR_FUNCTION(initLocale)13 Q_CONSTRUCTOR_FUNCTION(initLocale)
14 #endif
15 
16 int
17 main()
18 {
19     DateFormatter t;
20 
21     time_t ntime = time(nullptr);
22     qDebug() << "Time now:";
23     qDebug() << "tFancy : \t" << t.dateString(ntime);
24     t.setFormat(DateFormatter::Localized);
25     qDebug() << "tLocalized : \t" << t.dateString(ntime);
26     t.setFormat(DateFormatter::CTime);
27     qDebug() << "tCTime : \t" << t.dateString(ntime);
28     t.setFormat(DateFormatter::Iso);
29     qDebug() << "tIso   : \t" << t.dateString(ntime);
30     t.setFormat(DateFormatter::Rfc);
31     qDebug() << "trfc2822 : \t" << t.dateString(ntime);
32     QString rfcd = t.formatDate(DateFormatter::Rfc, ntime);
33     QDateTime dt;
34     QDateTime qdt;
35     QByteArray ba = rfcd.toLatin1();
36     const char *str = ba.constData();
37     if (HeaderParsing::parseDateTime(str, str + rfcd.length(), dt)) {
38         qDebug() << " ntime =" << (ntime) << " dt =" << (dt.toSecsSinceEpoch());
39         qdt.setSecsSinceEpoch(dt.toSecsSinceEpoch());
40         qDebug() << " qq =" << qdt.toString(QStringLiteral("ddd, dd MMM yyyy hh:mm:ss"));
41         qDebug() << " rfc2822 :" << t.formatDate(DateFormatter::Rfc, dt.toSecsSinceEpoch());
42     }
43     QString ddd = QStringLiteral("Mon, 05 Aug 2002 01:57:51 -0700");
44     ba = ddd.toLatin1();
45     str = ba.constData();
46     if (HeaderParsing::parseDateTime(str, str + ddd.length(), dt)) {
47         qDebug() << "dt =" << (dt.toSecsSinceEpoch());
48         qDebug() << " rfc2822 :" << t.formatDate(DateFormatter::Rfc, dt.toSecsSinceEpoch());
49     }
50 
51     t.setCustomFormat(QStringLiteral("MMMM dddd yyyy Z"));
52     qDebug() << "tCustom : \t" << t.dateString(ntime);
53 
54     ntime -= (24 * 3600 + 1);
55     qDebug() << "Time 24 hours and 1 second ago:";
56     t.setFormat(DateFormatter::Fancy);
57     qDebug() << "tFancy : \t" << t.dateString(ntime);
58     t.setFormat(DateFormatter::Localized);
59     qDebug() << "tLocalized : \t" << t.dateString(ntime);
60     t.setFormat(DateFormatter::CTime);
61     qDebug() << "tCTime : \t" << t.dateString(ntime);
62     t.setFormat(DateFormatter::Iso);
63     qDebug() << "tIso   : \t" << t.dateString(ntime);
64     t.setFormat(DateFormatter::Rfc);
65     qDebug() << "trfc2822 : \t" << t.dateString(ntime);
66     t.setCustomFormat(QStringLiteral("MMMM dddd Z yyyy"));
67     qDebug() << "tCustom : \t" << t.dateString(ntime);
68 
69     t.setFormat(DateFormatter::Fancy);
70     ntime -= (24 * 3600 * 30 + 59);
71     qDebug() << "Time 31 days and 1 minute ago:";
72     qDebug() << "tFancy : \t" << t.dateString(ntime);
73     t.setFormat(DateFormatter::Localized);
74     qDebug() << "tLocalized : \t" << t.dateString(ntime);
75     t.setFormat(DateFormatter::CTime);
76     qDebug() << "tCTime : \t" << t.dateString(ntime);
77     t.setFormat(DateFormatter::Iso);
78     qDebug() << "tIso   : \t" << t.dateString(ntime);
79     t.setFormat(DateFormatter::Rfc);
80     qDebug() << "trfc2822 : \t" << t.dateString(ntime);
81     t.setCustomFormat(QStringLiteral("MMMM Z dddd yyyy"));
82     qDebug() << "tCustom : \t" << t.dateString(ntime);
83 
84     qDebug() << "Static functions (dates like in the last test):";
85     qDebug() << "tFancy : \t" << DateFormatter::formatDate(DateFormatter::Fancy, ntime);
86     qDebug() << "tLocalized : \t" << DateFormatter::formatDate(DateFormatter::Localized, ntime);
87     qDebug() << "tCTime : \t" << DateFormatter::formatDate(DateFormatter::CTime, ntime);
88     qDebug() << "tIso   : \t" << DateFormatter::formatDate(DateFormatter::Iso, ntime);
89     qDebug() << "trfc2822 : \t" << DateFormatter::formatDate(DateFormatter::Rfc, ntime);
90     qDebug() << "tCustom : \t" << DateFormatter::formatDate(DateFormatter::Custom, ntime,
91              QStringLiteral("Z MMMM dddd yyyy"));
92     t.setFormat(DateFormatter::Fancy);
93     qDebug() << "QDateTime taking: (dates as in first test)";
94     qDebug() << "tFancy : \t" << t.dateString((QDateTime::currentDateTime()));
95     t.setFormat(DateFormatter::Localized);
96     qDebug() << "tLocalized : \t" << t.dateString(QDateTime::currentDateTime());
97     t.setFormat(DateFormatter::CTime);
98     qDebug() << "tCTime : \t" << t.dateString(QDateTime::currentDateTime());
99     t.setFormat(DateFormatter::Iso);
100     qDebug() << "tIso   : \t" << t.dateString(QDateTime::currentDateTime());
101     t.setFormat(DateFormatter::Rfc);
102     qDebug() << "tIso   : \t" << t.dateString(QDateTime::currentDateTime());
103     t.setCustomFormat(QStringLiteral("MMMM d dddd yyyy Z"));
104     qDebug() << "tCustom : \t" << t.dateString(QDateTime::currentDateTime());
105 }
106