diff options
Diffstat (limited to 'src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp')
-rw-r--r-- | src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp | 42 |
1 files changed, 23 insertions, 19 deletions
diff --git a/src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp b/src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp index 96554c900..48cb17c9a 100644 --- a/src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp +++ b/src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp @@ -32,19 +32,20 @@ ** **************************************************************************/ -#include <QDebug> -#include <QDateTime> #include "windows.h" +#include <QDateTime> + +#include <chrono> + void FileTimeToDateTime(const FILETIME *source, QDateTime *target) { ULARGE_INTEGER store; - QDateTime tempDateTime(QDate(1601, 1, 1)); - store.QuadPart = source->dwHighDateTime; store.QuadPart = store.QuadPart << 32; store.QuadPart += source->dwLowDateTime; + const QDateTime tempDateTime(QDate(1601, 1, 1), QTime(0, 0, 0, 0), Qt::UTC); *target = tempDateTime.addMSecs(store.QuadPart / 10000); } @@ -60,6 +61,13 @@ void DateTimeToSystemTime(const QDateTime *source, SYSTEMTIME *target) target->wMilliseconds = source->time().msec(); } +void DateTimeToFileTime(const QDateTime &dateTime, FILETIME *target) +{ + const qint64 nsecs = QDateTime(QDate(1601, 1, 1), QTime(0, 0, 0, 0), Qt::UTC) + .msecsTo(dateTime) * 10000; + target->dwLowDateTime = nsecs; + target->dwHighDateTime = nsecs >> 32; +} BOOL WINAPI FileTimeToSystemTime(CONST FILETIME *source,SYSTEMTIME *target) { @@ -70,21 +78,6 @@ BOOL WINAPI FileTimeToSystemTime(CONST FILETIME *source,SYSTEMTIME *target) return TRUE; } -BOOL WINAPI SystemTimeToFileTime(const SYSTEMTIME *source,FILETIME *target) -{ - // TODO: Implementation! - // This doesn't seem to be called at all - - qDebug() << "SystemTimeToFileTime"; - - target->dwHighDateTime = 0; - target->dwLowDateTime = 0; - - qWarning() << Q_FUNC_INFO; - - return TRUE; -} - BOOL WINAPI FileTimeToLocalFileTime(CONST FILETIME *source,FILETIME *target) { target->dwHighDateTime = source->dwHighDateTime; @@ -137,3 +130,14 @@ VOID WINAPI GetSystemTime(SYSTEMTIME *st) QDateTime nowDateTime = QDateTime::currentDateTimeUtc(); DateTimeToSystemTime(&nowDateTime, st); } + +VOID WINAPI GetSystemTimeAsFileTime(FILETIME *time) +{ + DateTimeToFileTime(QDateTime::currentDateTimeUtc(), time); +} + +DWORD WINAPI GetTickCount() +{ + using namespace std::chrono; + return duration_cast<milliseconds>(steady_clock::now().time_since_epoch()).count(); +} |