当使用boost :: log时,我可以使用以下命令使文件名使用时间戳作为名称的一部分,但我真的希望那个时间是UTC时间而不是本地时间。怎么可以实现呢?
boost::log::add_file_log(
boost::log::keywords::file_name = "Log-%Y%m%d-%H00.log",
我已经知道如何使file_name中的时间戳为UTC,但我还没有弄清楚如何制作file_name UTC。
先谢谢 布鲁斯
答案 0 :(得分:1)
除非您要修补Boost.Log,否则无法在文件名中使用UTC时间戳。
答案 1 :(得分:0)
我真的希望那个时间是UTC时间而不是当地时间
UTC时间“大约1秒钟,经度0°的平均太阳时”;见维基百科。
CST(这里是德克萨斯州)(基本上)与UTC不同6小时......您当地的时间可能会有所不同。
Google报告“协调世界时比中部时间早6个小时”。
我认为你可以通过知道偏移来从当地时间计算UTC。
我的尝试是:
std::string filename;
{
std::stringstream ss;
ss << "Log-" << year << month << day
<< "-" << hour << "00.log";
filename = ss.str();
}
我发现了这个:
std::time_t t = std::time(nullptr);
std::cout << "UTC: " << std::put_time(std::gmtime(&t), "%c %Z");
std::cout << "local: " << std::put_time(std::localtime(&t), "%c %Z");
结合这两个?好运
答案 2 :(得分:0)
你可以这样做(当地时间)
std::time_t t = std::time(nullptr);
std::stringstream filename;
filename << "Log-" << std::put_time(std::localtime(&t), "%Y%m%d-%H00") << ".log";
boost::log::add_file_log(
boost::log::keywords::file_name = filename.str(), .....