如何使用当前年度填充chrono :: year?

Jon*_*Mee 4 c++ date epoch c++-chrono c++20

所以我从这个问题中理解,在构造中使用的整数chrono::year对应于Anno Domini的原点0.

所以我的问题是,如果我想获得最新信息该怎么办chrono::year?有功能吗?我显然可以这样做:

const auto time = std::time(nullptr);
const auto current_date = *std::gmtime(&time);
const chrono::year foo{ current_date.tm_year + 1900 };
Run Code Online (Sandbox Code Playgroud)

但这似乎是一个非常复杂的过程.有什么比我更好的了吗?

T.C*_*.C. 7

using namespace std::chrono;
year_month_day ymd = floor<days>(system_clock::now());
const year foo = ymd.year();
Run Code Online (Sandbox Code Playgroud)

  • Fwiw,我赞成这个答案.但我还想澄清一下,这是UTC**的当前年份**.如果你想要特定时区的当前年份,可以使用`chrono :: zoned_time`(并且偶尔会给你一个不同的答案).执行此操作的代码本质上是此答案中提供的代码的超集. (4认同)