C++ 如何使boost::log::keywords::file_name使用UTC时间?

C++ 如何使boost::log::keywords::file_name使用UTC时间?,c++,boost,C++,Boost,当使用boost::log时,我可以使用以下命令使文件名使用时间戳作为名称的一部分,但我真的希望时间是UTC时间,而不是本地时间。如何做到这一点 boost::log::add_file_log( boost::log::keywords::file_name = "Log-%Y%m%d-%H00.log", 我已经知道如何将文件名中的时间戳设置为UTC,但我还没有弄清楚如何将文件名设置为UTC 提前谢谢 Bruce除非您想修补Boost.Log,否则无法在文件名中使用UTC时间戳 我

当使用boost::log时,我可以使用以下命令使文件名使用时间戳作为名称的一部分,但我真的希望时间是UTC时间,而不是本地时间。如何做到这一点

boost::log::add_file_log(
    boost::log::keywords::file_name = "Log-%Y%m%d-%H00.log",
我已经知道如何将文件名中的时间戳设置为UTC,但我还没有弄清楚如何将文件名设置为UTC

提前谢谢
Bruce

除非您想修补Boost.Log,否则无法在文件名中使用UTC时间戳

我真的希望时间是UTC时间,而不是当地时间

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(), .....
UTC时间是“在大约1秒之内,即0°经度的平均太阳时间”;参见维基百科

CST(德克萨斯州)与UTC(基本上)相差6小时。。。你的当地时间可能不同

谷歌报道“协调世界时比中央时间提前6小时”

我认为只要知道偏移量,就可以从当地时间计算UTC

我的尝试是:

std::string filename;
{  
   std::stringstream ss; 
   ss << "Log-" << year << month << day 
      << "-" << hour << "00.log";
   filename = ss.str();
}
std::字符串文件名;
{  
std::stringstream-ss;
ss你可以这样做(用当地时间)

std::time\u t=std::time(nullptr);
std::stringstream文件名;

这就是我害怕的。
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(), .....