From 175ed5d764b1c35e0d97f949e030382acea8527e Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 28 Apr 2020 18:39:17 +0300 Subject: fixes #2365 (NewStory: date/times are displayed according to the OS locale settings) --- src/mir_core/src/mir_core.def | 1 + src/mir_core/src/mir_core64.def | 1 + src/mir_core/src/timezones.cpp | 24 +++++++++++++++++------- 3 files changed, 19 insertions(+), 7 deletions(-) (limited to 'src/mir_core') diff --git a/src/mir_core/src/mir_core.def b/src/mir_core/src/mir_core.def index 6927452795..7b5c2f8b23 100644 --- a/src/mir_core/src/mir_core.def +++ b/src/mir_core/src/mir_core.def @@ -1465,3 +1465,4 @@ XmlGetChildText @1645 ?EventsRev@DB@@YGPAVEventCursorBase@1@IAAUDBEVENTINFO@@@Z @1689 NONAME ?begin@EventCursorBase@DB@@QAEIXZ @1690 NONAME ?end@EventCursorBase@DB@@QAEIXZ @1691 NONAME +TimeZone_GetSystemTime @1692 diff --git a/src/mir_core/src/mir_core64.def b/src/mir_core/src/mir_core64.def index adaccb1163..c66e248673 100644 --- a/src/mir_core/src/mir_core64.def +++ b/src/mir_core/src/mir_core64.def @@ -1465,3 +1465,4 @@ XmlGetChildText @1645 ?EventsRev@DB@@YAPEAVEventCursorBase@1@IAEAUDBEVENTINFO@@@Z @1689 NONAME ?begin@EventCursorBase@DB@@QEAAIXZ @1690 NONAME ?end@EventCursorBase@DB@@QEAAIXZ @1691 NONAME +TimeZone_GetSystemTime @1692 diff --git a/src/mir_core/src/timezones.cpp b/src/mir_core/src/timezones.cpp index 54a46ee82e..c5008caa77 100644 --- a/src/mir_core/src/timezones.cpp +++ b/src/mir_core/src/timezones.cpp @@ -317,15 +317,20 @@ MIR_CORE_DLL(int) TimeZone_PrintDateTime(HANDLE hTZ, LPCTSTR szFormat, LPTSTR sz return 0; } -MIR_CORE_DLL(int) TimeZone_PrintTimeStamp(HANDLE hTZ, mir_time ts, LPCTSTR szFormat, LPTSTR szDest, size_t cbDest, DWORD dwFlags) +MIR_CORE_DLL(int) TimeZone_GetSystemTime(HANDLE hTZ, mir_time ts, SYSTEMTIME *dest, DWORD dwFlags) { - MIM_TIMEZONE *tz = (MIM_TIMEZONE*)hTZ; - if (tz == nullptr && (dwFlags & (TZF_DIFONLY | TZF_KNOWNONLY))) + if (dest == nullptr) + return 2; + + MIM_TIMEZONE *tz = (MIM_TIMEZONE *)hTZ; + if (tz == nullptr && (dwFlags & (TZF_DIFONLY | TZF_KNOWNONLY))) { + memset(dest, 0, sizeof(SYSTEMTIME)); return 1; + } if (tz == nullptr) tz = &myInfo.myTZ; - + FILETIME ft; if (tz == UTC_TIME_HANDLE) UnixTimeToFileTime(ts, &ft); @@ -336,10 +341,15 @@ MIR_CORE_DLL(int) TimeZone_PrintTimeStamp(HANDLE hTZ, mir_time ts, LPCTSTR szFor UnixTimeToFileTime(ts + tz->offset, &ft); } - SYSTEMTIME st; - FileTimeToSystemTime(&ft, &st); + FileTimeToSystemTime(&ft, dest); + return 0; +} - FormatTime(&st, szFormat, szDest, cbDest); +MIR_CORE_DLL(int) TimeZone_PrintTimeStamp(HANDLE hTZ, mir_time ts, LPCTSTR szFormat, LPTSTR szDest, size_t cbDest, DWORD dwFlags) +{ + SYSTEMTIME st; + if (!TimeZone_GetSystemTime(hTZ, ts, &st, dwFlags)) + FormatTime(&st, szFormat, szDest, cbDest); return 0; } -- cgit v1.2.3