我想从纪元值中提取日期和时间并根据用户的区域设置进行转换。已经有一个使用 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。
正如 @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;
}