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

时间:2018-09-18 21:08:31

标签: c++ date epoch chrono c++20

因此,我从this question了解到,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 };

但这似乎是一个非常复杂的过程。有什么更好的选择吗?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

这是另一种方式:

auto now = std::chrono::system_clock::now();
std::time_t now_c = std::chrono::system_clock::to_time_t(now);
struct tm *parts = std::localtime(&now_c);
std::cout << 1900 + parts->tm_year  << std::endl;