通过提升来获取当前世纪

时间:2014-05-29 16:53:10

标签: c++ datetime boost

我可以通过调用

来检索当前年份
boost::posix_time::second_clock::local_time().date().year(); 

但是如何通过提升功能从那一年中提取几个世纪?

3 个答案:

答案 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;
}