首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使boost::log::keywords::file_name使用UTC时间?

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

Stack Overflow用户
提问于 2016-02-09 04:19:24
回答 3查看 561关注 0票数 1

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

代码语言:javascript
复制
boost::log::add_file_log(
    boost::log::keywords::file_name = "Log-%Y%m%d-%H00.log",

我已经知道如何使file_name中的时间戳成为UTC,但我还没有弄清楚如何使file_name成为UTC。

事先谢谢布鲁斯

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-09 15:54:59

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

票数 1
EN

Stack Overflow用户

发布于 2016-02-10 02:43:51

我真的希望那个时间是在世界协调时,而不是当地时间。

UTC的时间是“在大约1秒内,平均太阳时间在0°经度”,参见维基百科。

在德克萨斯州,CST (实质上)与UTC相差6小时.你当地的时间可能不一样。

谷歌报告称,“协调世界时间比中央时间提前6小时”。

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

我的尝试是:

代码语言:javascript
复制
std::string filename;
{  
   std::stringstream ss; 
   ss << "Log-" << year << month << day 
      << "-" << hour << "00.log";
   filename = ss.str();
}

我发现了这个:

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2018-03-29 13:22:32

你可以这样做(用当地时间)

代码语言:javascript
复制
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(), .....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35283811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档