From 6cde057e874114a0f86222e5bce840c3446d5ec1 Mon Sep 17 00:00:00 2001 From: cxh Date: Thu, 13 Nov 2025 14:09:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=B6=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/logger.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/logger.cpp b/src/logger.cpp index 194e4fa..835f999 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -4,9 +4,9 @@ #include #include #include -#include #include #include +#include std::ofstream Logger::log_file; std::string Logger::current_log_filename; @@ -26,14 +26,16 @@ std::string Logger::get_time_string() using namespace std::chrono; auto now = system_clock::now(); - auto zt = zoned_time{current_zone(), now}; // 自动使用系统时区(Asia/Shanghai) + zoned_time zt{current_zone(), now}; - // 获取毫秒部分 - auto ms = duration_cast(zt.get_local_time().time_since_epoch()) % 1000; + auto local = zt.get_local_time(); + auto ms = duration_cast(local.time_since_epoch()) % 1000; + + std::time_t t = system_clock::to_time_t(now); + std::tm tm_now = *std::localtime(&t); - // 格式化 std::ostringstream ss; - ss << format("{:%Y-%m-%d %H:%M:%S}", zt) << '.' << std::setw(3) << std::setfill('0') << ms.count(); + ss << std::put_time(&tm_now, "%Y-%m-%d %H:%M:%S") << '.' << std::setw(3) << std::setfill('0') << ms.count(); return ss.str(); } @@ -45,10 +47,14 @@ std::string Logger::get_current_time_utc8() auto now = system_clock::now(); zoned_time zt{current_zone(), now}; - auto ms = duration_cast(zt.get_local_time().time_since_epoch()) % 1000; + auto local = zt.get_local_time(); + auto ms = duration_cast(local.time_since_epoch()) % 1000; + + std::time_t t = system_clock::to_time_t(now); + std::tm tm_now = *std::localtime(&t); std::ostringstream ss; - ss << format("{:%Y%m%d%H%M%S}", zt) << std::setw(3) << std::setfill('0') << ms.count(); + ss << std::put_time(&tm_now, "%Y%m%d%H%M%S") << std::setw(3) << std::setfill('0') << ms.count(); return ss.str(); }