我可以通过调用
来检索当前年份boost::posix_time::second_clock::local_time().date().year();
但是如何通过提升功能从那一年中提取几个世纪?
答案 0 :(得分:4)
AFAIK一个世纪在所有地区定义为100年。然而,有一个世纪何时开始的问题。 (你是从零还是一个算?)假设公历或日历与教皇格雷格同意何时开始计算:
#include <iostream>
int yearToCentury(int year)
{
return (year + 99) / 100;
}
int main()
{
std::cout << 1999 << ": " << yearToCentury(1999) << std::endl;
std::cout << 2000 << ": " << yearToCentury(2000) << std::endl;
std::cout << 2001 << ": " << yearToCentury(2001) << std::endl;
return 0;
}
产生这个结果:
1999: 20
2000: 20
2001: 21
但是,我找不到标准库中的函数或者在boost中为你做这个计算的证据。
答案 1 :(得分:3)
除以100有什么不对?
答案 2 :(得分:1)
首先通过boost获取当前日期时间:
boost::posix_time::ptime timeLocal = boost::posix_time::second_clock::local_time();
auto century = GetCentury(timeLocal.date().year());
获取当前世纪的方法:
/// <summary>Gets century from year.</summary>
/// <param name="year">The year.</param>
/// <returns>The century as int value.</returns>
int GetCentury(int year)
{
if (year % 100 == 0)
return year / 100;
else
return year / 100 + 1;
}