summaryrefslogtreecommitdiffstats
path: root/src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp')
-rw-r--r--src/libs/7zip/unix/CPP/myWindows/myDateAndTime.cpp42
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();
+}