diff options
author | Ahmad Samir <a.samirh78@gmail.com> | 2022-10-01 17:29:57 +0200 |
---|---|---|
committer | Kai Köhne <kai.koehne@qt.io> | 2022-12-23 08:27:42 +0100 |
commit | b82c9d08f835c3a0babe7c8adb495836a57d682c (patch) | |
tree | a0452a3d2fb4cd35d7224ba315e5857f4f292fae /src/corelib/io/qfileinfo.h | |
parent | 936cae6b53e8982fb087458745e06721d35341ef (diff) |
QFileInfo: overload file time related methods to take a QTimeZone arg
The fileTime() method and co. get the specified file time but always
converted it to LocalTime; in some cases, e.g. when sorting dir entries by
last modification time in QDir, or when comparing a timestamp of a file
against its last modification time, basically all that's needed is the last
modification time returned by the underlying stat call (in QFileSystemEngine),
which is msecs since the Epoch.
API docs changes coauthored with Kai Köhne.
QDir benchmark results follow in the next commit.
[ChangeLog][QtCore][QFileInfo] Overload file time related methods to
take QTimeZone argument; mainly useful if all you need is UTC time,
e.g. to compare file timestamps, this is inherently faster as no
conversions need to be performed.
Change-Id: If73a54e935fe272e34acbf083973c30b61510be8
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/io/qfileinfo.h')
-rw-r--r-- | src/corelib/io/qfileinfo.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/corelib/io/qfileinfo.h b/src/corelib/io/qfileinfo.h index 815659a7fe..435fba5497 100644 --- a/src/corelib/io/qfileinfo.h +++ b/src/corelib/io/qfileinfo.h @@ -9,6 +9,7 @@ #include <QtCore/qshareddata.h> #include <QtCore/qmetatype.h> #include <QtCore/qdatetime.h> +#include <QtCore/qtimezone.h> QT_BEGIN_NAMESPACE @@ -150,12 +151,38 @@ public: qint64 size() const; +#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED) QDateTime birthTime() const { return fileTime(QFile::FileBirthTime); } QDateTime metadataChangeTime() const { return fileTime(QFile::FileMetadataChangeTime); } QDateTime lastModified() const { return fileTime(QFile::FileModificationTime); } QDateTime lastRead() const { return fileTime(QFile::FileAccessTime); } QDateTime fileTime(QFile::FileTime time) const; + QDateTime birthTime(const QTimeZone &tz) const { return fileTime(QFile::FileBirthTime, tz); } + QDateTime metadataChangeTime(const QTimeZone &tz) const { return fileTime(QFile::FileMetadataChangeTime, tz); } + QDateTime lastModified(const QTimeZone &tz) const { return fileTime(QFile::FileModificationTime, tz); } + QDateTime lastRead(const QTimeZone &tz) const { return fileTime(QFile::FileAccessTime, tz); } + QDateTime fileTime(QFile::FileTime time, const QTimeZone &tz) const; +#else + QDateTime birthTime(const QTimeZone &tz = QTimeZone::LocalTime) const + { + return fileTime(QFile::FileBirthTime, tz); + } + QDateTime metadataChangeTime(const QTimeZone &tz = QTimeZone::LocalTime) const + { + return fileTime(QFile::FileMetadataChangeTime, tz); + } + QDateTime lastModified(const QTimeZone &tz = QTimeZone::LocalTime) const + { + return fileTime(QFile::FileModificationTime, tz); + } + QDateTime lastRead(const QTimeZone &tz = QTimeZone::LocalTime) const + { + return fileTime(QFile::FileAccessTime, tz); + } + QDateTime fileTime(QFile::FileTime time, const QTimeZone &tz = QTimeZone::LocalTime) const; +#endif + bool caching() const; void setCaching(bool on); void stat(); |