summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qfileinfo.h
diff options
context:
space:
mode:
authorAhmad Samir <a.samirh78@gmail.com>2022-10-01 17:29:57 +0200
committerKai Köhne <kai.koehne@qt.io>2022-12-23 08:27:42 +0100
commitb82c9d08f835c3a0babe7c8adb495836a57d682c (patch)
treea0452a3d2fb4cd35d7224ba315e5857f4f292fae /src/corelib/io/qfileinfo.h
parent936cae6b53e8982fb087458745e06721d35341ef (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.h27
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();