【问题标题】:obtain current day using chrono使用 chrono 获取当前日期
【发布时间】:2013-07-31 10:38:24
【问题描述】:

C++11 提供了一个返回当前时间的函数。但是,我找不到返回当前日期的函数。我使用 boost 来做到这一点。

boost::gregorian::date TODAY = boost::gregorian::day_clock::local_day();

有没有什么方法可以使用 chrono 实现相同的结果?

编辑:我想要的是使用 time_point 来表示当天。这意味着小时、分钟和秒都为零 2013-07-31 00:00:00

【问题讨论】:

  • 你的意思是"mon","wens", ...
  • 不,chrono 用于时间/计时。
  • @aaronman 我想要的是使用 time_point 来表示当天。这意味着小时、分钟和秒都为零 2013-07-31 00:00:00
  • 也许你想要this

标签: c++ c++11 chrono


【解决方案1】:

Chronos 不会扩展到日期问题;这真的不是它的目的。日期问题和“时间”问题之间的分界线是日期。而且 Chrono 没有定义日期类型。

但是您可以将时间除以 24。或者更好的是,定义您自己的持续时间 typedef 并使用它:

typedef std::duration<std::uint32_t, std::ratio<3600 * 24>> day;

那么只需 use a time_point 使用该类型:

std::chrono::time_point<std::chrono::system_clock, day> day_getter;
day_getter.time_since_epoch();

【讨论】:

  • 这里有一些算法设计用于在system_clock::time_pointyear/month/day 三元组之间进行转换,并且可以进一步用于获取一天中的时间,而无需通过time_t 和C API。它使用此答案中概述的day typedef(尽管它被称为days 而不是与chrono::hourschrono::minutes 等保持一致)。这些算法旨在使客户能够轻松地将chrono 扩展到最新的问题。 home.roadrunner.com/~hinnant/date_algorithms.html
猜你喜欢
  • 2020-09-19
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多