当使用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。
事先谢谢布鲁斯
发布于 2016-02-09 15:54:59
除非您想修补Boost.Log,否则无法在文件名中使用UTC时间戳。
发布于 2016-02-10 02:43:51
我真的希望那个时间是在世界协调时,而不是当地时间。
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::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");把两者结合起来?GoodLuck
发布于 2018-03-29 13:22:32
你可以这样做(用当地时间)
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(), .....https://stackoverflow.com/questions/35283811
复制相似问题