使用 C++ 库根据用户的区域设置设置日期和时间的格式

问题描述 投票:0回答:1

我想从纪元值中提取日期和时间并根据用户的区域设置进行转换。已经有一个使用 Windows API 的现有解决方案https://www.codeproject.com/Articles/12568/Format-Date-and-Time-As-Per-User-s-Locale-Settings

我希望同样的事情能够独立于平台。 (Mac / Windows / Linux)我怎样才能实现这一目标?有没有 C/C++ 库可以做同样的事情?我正在使用 C++14。

c++ datetime c++14 cross-platform epoch
1个回答
0
投票

正如 @IgorTandetnik 在评论中指出的,这里是执行以下操作的示例代码:

#include <iostream>
#include <iomanip>
#include <ctime>
#include <locale>
#include <sstream>

std::wstring covertEpochToSystemLocal(std::wstring epochTime) {
    // Convert epoch time string to time_t
    std::wistringstream iss(epochTime);
    std::time_t epochValue;
    iss >> epochValue;

    // Convert epoch value to local time
    std::tm* localTime = std::localtime(&epochValue);

    // Set locale settings for wcout
    std::locale loc("");
    std::wcout.imbue(loc);

    // Format local time according to the locale's settings
    std::wostringstream oss;
    oss.imbue(loc);
    oss << std::put_time(localTime, L"%x %X");

    return oss.str();
}

int main() {
    // Example usage:
    std::wstring epochTime = L"1707242223"; // Example epoch time string
    std::wstring localTimeString = covertEpochToSystemLocal(epochTime);
    std::wcout << L"Local time: " << localTimeString << std::endl;

    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.