gpt4 book ai didi

c++ - boost day_clock::local_day() 难题

转载 作者:行者123 更新时间:2023-11-28 05:41:07 25 4
gpt4 key购买 nike

我有这段代码在法兰克福的一台机器上执行:

    //hardcoding for simplicity but these get passed
int year = 2016;
int month = 05;
int day = 6;

boost::gregorian::date gdToday (boost::gregorian::day_clock::local_day());
LOG(DEBUG, 0) << " today=" << gdToday;

if (boost::gregorian::date(year, month, day) > gdToday)
{
// log
return;
}

在我的日志中,我看到了这个:2016-05-06 02:40:40.479057 |调试 | 今天=2016 年 5 月 5 日

我知道日志时间戳是 UTC。我假设 day_clock::local_day() 给我 CEST 时间。

所以 2016-05-06 02:40 UTC 将是 2016-05-06 04:40。但为什么 gdToday 仍然给我 2016-May-05?因此,if 比较失败。

我试图阅读 boost 文档,但仍然没有太多线索。难道是 boost::gregorian::date::operator<<.我也不认为使用 day_clock::universal_day() 会有任何用处。

有什么提示或想法吗?谢谢!!

最佳答案

很有趣。当然,如果不知道有效的语言环境和时区,我们就看不到任何东西。您的假设不成立。

冒险,因为您没有实际上展示您如何在日志中显示local_day,我可以推断您不小心将日期硬编码到一个格式化程序而不是使用一个惰性 actor(所有 boost 格式化程序都是在日志消息格式化时被调用的惰性 actor)。

这意味着它从一开始就不会进行到第二天,除非您的格式被重新初始化(例如流程重启)。

关于c++ - boost day_clock::local_day() 难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37081095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com