summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Timer.cpp
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2018-10-26 14:19:16 +0200
committerJosJuice <josjuice@gmail.com>2018-10-26 14:26:21 +0200
commit5718b870d1793afaf60944dfc1b086d370389538 (patch)
tree4d12a1b379c0d0edf040669698412cf99b107a72 /Source/Core/Common/Timer.cpp
parent61821b067f9f5fac85188d8abc0841ce9529d0f1 (diff)
Use wcsftime instead of strftime on Windows to fix encoding errors
Reported by https://forums.dolphin-emu.org/Thread-odd-codes-appear-in-save-load-state-when-chinese-language-is-used
Diffstat (limited to 'Source/Core/Common/Timer.cpp')
-rw-r--r--Source/Core/Common/Timer.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/Source/Core/Common/Timer.cpp b/Source/Core/Common/Timer.cpp
index 081dd2008c..1d25cc0f71 100644
--- a/Source/Core/Common/Timer.cpp
+++ b/Source/Core/Common/Timer.cpp
@@ -7,6 +7,8 @@
#include <string>
#ifdef _WIN32
+#include <cwchar>
+
#include <windows.h>
#include <mmsystem.h>
#include <sys/timeb.h>
@@ -203,14 +205,19 @@ std::string Timer::GetTimeFormatted()
struct tm* gmTime = localtime(&sysTime);
+#ifdef _WIN32
+ wchar_t tmp[13];
+ wcsftime(tmp, 6, L"%M:%S", gmTime);
+#else
char tmp[13];
strftime(tmp, 6, "%M:%S", gmTime);
+#endif
// Now tack on the milliseconds
#ifdef _WIN32
struct timeb tp;
(void)::ftime(&tp);
- return StringFromFormat("%s:%03i", tmp, tp.millitm);
+ return UTF16ToUTF8(tmp) + StringFromFormat(":%03i", tp.millitm);
#elif defined __APPLE__
struct timeval t;
(void)gettimeofday(&t, nullptr);
@@ -265,9 +272,15 @@ std::string Timer::GetDateTimeFormatted(double time)
time_t seconds = (time_t)time + DOUBLE_TIME_OFFSET;
tm* localTime = localtime(&seconds);
+#ifdef _WIN32
+ wchar_t tmp[32] = {};
+ wcsftime(tmp, sizeof(tmp), L"%x %X", localTime);
+ return UTF16ToUTF8(tmp);
+#else
char tmp[32] = {};
strftime(tmp, sizeof(tmp), "%x %X", localTime);
return tmp;
+#endif
}
} // Namespace Common