在 25.8.1 [time.cal.general] 中:
25.8 中的类型描述了民用(公历)日历及其与sys_days
and local_days
.
其措辞具有挑战性,因为其目的是在不冒犯那些遵循其他日历的人的情况下对公历进行建模(就像 C++ 目前通过 C API 所做的那样)。
我现在也注意到这个词“促产者”规范中缺少,可能应该添加到战略位置。
为了直接回答这个问题,积分与std::chrono::year
是 Anno Domini 参考,由教皇格列高利 (Pope Gregory) 在 1582 年定义,但在时间上可以向后和向前运行。当我写这篇文章时,这一年是2018y
.
并且(回答下面 Jonathan Mee 的评论),这个程序:
#include <chrono>
#include <iostream>
int
main()
{
using namespace std;
using namespace std::chrono;
const auto foo = 2018y;
cout << int{foo} << '\n';
}
Outputs:
2018
您可以尝试的现场演示附带条件是"date.h"示例实现将内容放入namespace date
代替namespace std::chrono
.
我还应该指出,该软件允许用户编写的日历与std::chrono
系统。这是一个例子儒略历。还有几个例子here.
最后,简要说明为何将当前年份表示为year{2018}
(Anno Domini),而不是year{48}
(time_t
的 1970 年起源),或year{118}
(tm_year
1900年起源):
这种哲学在电影中使用时是歇斯底里的。但在软件设计中使用时会变得令人厌烦。这个库试图达到预期的效果。