diff --git a/Foundation/src/LocalDateTime.cpp b/Foundation/src/LocalDateTime.cpp index bdd0ca0bf..da27218dc 100644 --- a/Foundation/src/LocalDateTime.cpp +++ b/Foundation/src/LocalDateTime.cpp @@ -25,6 +25,8 @@ #include #if defined(_WIN32_WCE) && _WIN32_WCE < 0x800 #include "wce_time.h" +#elif defined(_WIN32) +#include #endif @@ -269,7 +271,10 @@ void LocalDateTime::determineTzd(bool adjust) #if defined(_WIN32_WCE) && _WIN32_WCE < 0x800 std::tm* broken = wceex_localtime(&epochTime); #else - std::tm* broken = std::localtime(&epochTime); + std::tm brokenBuf; + std::tm* broken = &brokenBuf; + errno_t err = localtime_s(broken, &epochTime); + if (err) broken = nullptr; #endif if (!broken) throw Poco::SystemException("cannot get local time"); _tzd = (Timezone::utcOffset() + ((broken->tm_isdst == 1) ? 3600 : 0));