Save the work.

This commit is contained in:
Martin Rotter 2014-02-23 21:53:26 +01:00
parent b0596c092e
commit 0782a948d6
2 changed files with 32 additions and 8 deletions

View File

@ -18,20 +18,44 @@ QDateTime TextFactory::parseDateTime(const QString &date_time) {
QString temp;
QLocale locale(QLocale::C);
QStringList date_patterns;
QStringList timezone_offset_patterns;
QTime time_zone_offset;
//QRegExp timezone_rexp;
bool positive_time_zone_offset = false;
date_patterns << "yyyy-MM-ddTHH:mm:ss" << "MMM dd yyyy hh:mm:ss" <<
"MMM d yyyy hh:mm:ss" << "ddd, dd MMM yyyy HH:mm:ss" <<
"dd MMM yyyy" << "yyyy-MM-dd HH:mm:ss.z" << "yyyy-MM-dd" <<
"yyyy" << "yyyy-MM" << "yyyy-MM-dd" << "yyyy-MM-ddThh:mm" <<
"yyyy-MM-ddThh:mm:ss";
timezone_offset_patterns << "[+-]\\d\\d:\\d\\d$" << // ±[hh]:[mm]
"[+-]\\d\\d\\d\\d$" << // ±[hh][mm]
"[+-]\\d\\d$"; // ±[hh]
/*if (date.size() > 7) {
int index = date.size() - 7;
foreach (const QString &pattern, timezone_offset_patterns) {
timezone_rexp.setPattern(pattern);
int index_start_timezone = timezone_rexp.indexIn(date, index);
if (index_start_timezone != 1) {
}
}
}*/
// TODO: Patterny revidovat a nejdriv u predaneho stringu
// hledat +,- znak, je li nalezen tak odriznout vse vpravo od nej
// a to (mozna pomoci vice patternů) konvertovat na QTime (offset)
// pote konvertovat zaklad date/time co je vlevo od -,+
// a na konec pricist/odecist offse.
date_patterns << "yyyy-MM-ddTHH:mm:ss" << "MMM dd yyyy hh:mm:ss" <<
"MMM d yyyy hh:mm:ss" << "ddd, dd MMM yyyy HH:mm:ss" <<
"dd MMM yyyy" << "yyyy-MM-dd HH:mm:ss.z" << "yyyy-MM-dd" <<
"yyyy" << "yyyy-MM" << "yyyy-MM-dd" << "yyyy-MM-ddThh:mm" <<
"yyyy-MM-ddThh:mm:ss";
// Check if last part of date is time zone offset,
// represented as [+|-]hh:mm.
@ -74,10 +98,10 @@ QDateTime TextFactory::parseDateTime(const QString &date_time) {
if (time_zone_offset.isValid()) {
if (positive_time_zone_offset) {
return dt.addSecs(QTime(0, 0, 0, 0).secsTo(time_zone_offset));
return dt.addSecs(- QTime(0, 0, 0, 0).secsTo(time_zone_offset));
}
else {
return dt.addSecs(- QTime(0, 0, 0, 0).secsTo(time_zone_offset));
return dt.addSecs(QTime(0, 0, 0, 0).secsTo(time_zone_offset));
}
}
else {

View File

@ -13,7 +13,7 @@ class TextFactory {
explicit TextFactory();
public:
static bool isCaseInsensitiveLessThan(const QString &lhs, const QString &rhs) {
static inline bool isCaseInsensitiveLessThan(const QString &lhs, const QString &rhs) {
return lhs.toLower() < rhs.toLower();
}