我有一段代码在法兰克福的一台机器上执行:
//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
我知道日志时间戳在UTC。我假设day_clock::local_day()给了我CEST时间。
所以2016-05-06 02:40将是2016-05-06 :40。但是为什么gdToday仍然给我2016-5-05?正因为如此,如果比较失败了。
我已经试着读了助推博士,但仍然没有太多的线索。可能是boost::gregorian::date::operator<<。我认为使用day_clock::universal_day()也没有任何用处。
有什么暗示或想法吗?谢谢!!
发布于 2016-05-06 20:52:53
有意思的。当然,如果不知道地点和时区,我们什么也看不见。你的假设不能割断它。
由于您实际上没有展示如何在日志中显示local_day,所以我可以推断,您不小心将一天硬编码到格式化程序中,而不是使用懒惰的参与者(所有boost格式化程序都是在日志消息格式化时被调用的懒散角色)。
这意味着它从一开始就不会进展到第二天,除非您的格式被重新初始化(例如进程重新启动)。
https://stackoverflow.com/questions/37081095
复制相似问题