mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-23 13:55:36 +08:00
refs #921, string utility functions
This commit is contained in:
committed by
Mathew Sutcliffe
parent
5ce704c963
commit
8299552812
@@ -178,6 +178,62 @@ namespace BlackMisc
|
||||
{
|
||||
return removeChars(name.toUpper(), [](QChar c) { return !c.isUpper(); });
|
||||
}
|
||||
|
||||
QDateTime parseMultipleDateTimeFormats(const QString &dateTimeString)
|
||||
{
|
||||
if (dateTimeString.isEmpty()) { return QDateTime(); }
|
||||
if (isDigitsOnlyString(dateTimeString))
|
||||
{
|
||||
// 2017 0301 124421 321
|
||||
if (dateTimeString.length() == 17)
|
||||
{
|
||||
return QDateTime::fromString(dateTimeString, "yyyyMMddHHmmsszzz");
|
||||
}
|
||||
if (dateTimeString.length() == 14)
|
||||
{
|
||||
return QDateTime::fromString(dateTimeString, "yyyyMMddHHmmss");
|
||||
}
|
||||
if (dateTimeString.length() == 12)
|
||||
{
|
||||
return QDateTime::fromString(dateTimeString, "yyyyMMddHHmm");
|
||||
}
|
||||
if (dateTimeString.length() == 8)
|
||||
{
|
||||
return QDateTime::fromString(dateTimeString, "yyyyMMdd");
|
||||
}
|
||||
return QDateTime();
|
||||
}
|
||||
|
||||
// remove simple separators and check if digits only again
|
||||
const QString simpleSeparatorsRemoved = removeChars(dateTimeString, [](QChar c)
|
||||
{
|
||||
return c == ' ' || c == ':' || c == '_' || c == '-';
|
||||
});
|
||||
if (isDigitsOnlyString(simpleSeparatorsRemoved))
|
||||
{
|
||||
return parseMultipleDateTimeFormats(simpleSeparatorsRemoved);
|
||||
}
|
||||
|
||||
// stupid trial and error
|
||||
QDateTime ts = QDateTime::fromString(dateTimeString, Qt::ISODateWithMs);
|
||||
if (ts.isValid()) return ts;
|
||||
|
||||
ts = QDateTime::fromString(dateTimeString, Qt::ISODate);
|
||||
if (ts.isValid()) return ts;
|
||||
|
||||
ts = QDateTime::fromString(dateTimeString, Qt::TextDate);
|
||||
if (ts.isValid()) return ts;
|
||||
|
||||
ts = QDateTime::fromString(dateTimeString, Qt::DefaultLocaleLongDate);
|
||||
if (ts.isValid()) return ts;
|
||||
|
||||
ts = QDateTime::fromString(dateTimeString, Qt::DefaultLocaleShortDate);
|
||||
if (ts.isValid()) return ts;
|
||||
|
||||
// SystemLocaleShortDate,
|
||||
// SystemLocaleLongDate,
|
||||
return QDateTime();
|
||||
}
|
||||
}
|
||||
|
||||
//! \endcond
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
#include <QByteArray>
|
||||
#include <QDataStream>
|
||||
#include <QDateTime>
|
||||
#include <QDebug>
|
||||
#include <QList>
|
||||
#include <QMapIterator>
|
||||
@@ -107,6 +108,18 @@ namespace BlackMisc
|
||||
return s.trimmed();
|
||||
}
|
||||
|
||||
//! String with digits only
|
||||
inline bool isDigitsOnlyString(const QString &testString)
|
||||
{
|
||||
return !containsChar(testString, [](QChar c) { return !c.isDigit(); });
|
||||
}
|
||||
|
||||
//! String only with digits
|
||||
inline QString digitOnlyString(const QString &string)
|
||||
{
|
||||
return removeChars(string, [](QChar c) { return !c.isDigit(); });
|
||||
}
|
||||
|
||||
//! Bool to on/off
|
||||
BLACKMISC_EXPORT QString boolToOnOff(bool v, bool i18n = false);
|
||||
|
||||
@@ -143,6 +156,10 @@ namespace BlackMisc
|
||||
//! Get a simplified upper case name for searching by removing all characters except A-Z
|
||||
BLACKMISC_EXPORT QString simplifyNameForSearch(const QString &name);
|
||||
|
||||
//! Parse multiple date time formats
|
||||
//! \remark potentially slow, so only to be used when format is unknown
|
||||
BLACKMISC_EXPORT QDateTime parseMultipleDateTimeFormats(const QString &dateTimeString);
|
||||
|
||||
namespace Mixin
|
||||
{
|
||||
/*!
|
||||
|
||||
Reference in New Issue
Block a user