From df11673f8644978bc8962406ec72e54839b54bfd Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Tue, 18 Jul 2023 11:23:09 +0200 Subject: [PATCH] GetISO8601CurrentDateTime(): use %z format on msys2 build ucrt64 (however ucrt64 on msys2 has an issue (crash) with json validator and can be used only for tests) --- common/string_utils.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/common/string_utils.cpp b/common/string_utils.cpp index 2280b9cdf5..6f9abce855 100644 --- a/common/string_utils.cpp +++ b/common/string_utils.cpp @@ -663,10 +663,11 @@ char* GetLine( FILE* File, char* Line, int* LineNum, int SizeLine ) wxString GetISO8601CurrentDateTime() { - // on msys2 the %z format (offset from UTC in the ISO 8601 format, e.g. -0430) does not work, - // and is in fact %Z (locale-dependent time zone name or abbreviation) which breaks our date. - // so do not use it (until %z works) -#ifdef __MINGW32__ + // on msys2 variant mingw64, in fmt::format the %z format + // (offset from UTC in the ISO 8601 format, e.g. -0430) does not work, + // and is in fact %Z (locale-dependent time zone name or abbreviation) and breaks our date. + // However, on msys2 variant ucrt64, it works (this is not the same code in fmt::format) +#if defined(__MINGW32__) && !defined(_UCRT) return fmt::format( "{:%FT%T}", fmt::localtime( std::time( nullptr ) ) ); #else return fmt::format( "{:%FT%T%z}", fmt::localtime( std::time( nullptr ) ) );