C++ 如何使boost::log::keywords::file_name使用UTC时间?
当使用boost::log时,我可以使用以下命令使文件名使用时间戳作为名称的一部分,但我真的希望时间是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::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(), .....