year class

Represents a year in the Gregorian calendar.

Syntax

class year; // C++20

Remarks

A year can hold a year value between -32767 to 32767.

Members

Name Description
Constructors Construct a year
is_leap Determine if the year is a leap year.
max Returns the largest possible year value.
min Returns the smallest possible year value.
ok Verify that the year value is in the valid range [-32767, 32767].
operator+ Unary plus.
operator++ Increment the year.
operator+= Add the specified number of years to this year.
operator- Unary minus.
operator-- Decrement the year.
operator-= Subtract the specified number of years from this year.
operator int Get the year value.

Non-members

Name Description
from_stream Parse a year from a stream using the specified format
operator+ Add years.
operator- Subtract years.
operator== Determine whether two years are equal.
operator<=> Compare this year against another year. The >, >=, <=, <, != operators are synthesized by the compiler.
operator<< Output a year to the given stream.
operator""y Create a year literal.

Requirements

Header: <chrono> (since C++20)

Namespace: std::chrono

Compiler Option: /std:c++latest

Constructors

Construct a year.

1) year() = default;
2) explicit constexpr year(unsigned y) noexcept;

Parameters

y
Construct a year with value y.

Remarks

1) The default constructor doesn't initialize the year value.
2) Construct a year with the specified value.

Example: Create a year

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year y{2020};
    year y2 = 2021y;
    
    std::cout << y << ", " << y2;

    return 0;
}
2020, 2021

is_leap

Check if the value stored in this year is in the valid range.

constexpr bool is_leap() const noexcept;

Return value

true if the year value is a leap year. Otherwise, false. A leap year is a year divisible by 4 but not 100--or is divisible by 400.

max

Returns the largest possible year.

static constexpr year max() noexcept;

Return value

year{32767}

min

Returns the smallest possible year.

static constexpr year min() noexcept;

Return value

year{-32767}

ok

Check if the value stored in this year is in the valid range.

constexpr bool ok() const noexcept;

Return value

true if the year value is in the range [-32676, 32767]. Otherwise, false.

operator+

Apply unary plus.

constexpr year operator+() const noexcept;

Return value

Returns *this

Example: unary operator+

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
   year y{-1};
   std::cout << +y;
   return 0;
}
-0001

operator++

Add 1 to the year value.

1) constexpr year& operator++() noexcept;
2) constexpr year operator++(int) noexcept;

Return value

1) Returns reference to this year after it has been incremented (a postfix increment).
2) Returns a copy of the year, before it has been incremented (a prefix increment).

Example: operator++

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year y{2021};

    std::cout << y << " " << ++y << "\n"; // constexpr year& operator++() noexcept
    std::cout << y << " " << y++ << "\n"; // constexpr year operator++(int) noexcept
    std::cout << y << "\n";
    return 0;
}
2021 2022
2022 2022
2023

Remarks

If the incremented result exceeds 32767, it overflows to -32768

operator-

Unary minus. Negate the year.

constexpr year operator-() const noexcept; // C++20

Return value

Returns a negated copy of the year.

Example: unary operator-

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
   year y{1977};
   std::cout << -y << '\n';

   return 0;
}
-1977

operator--

Subtract 1 from the year value.

1) constexpr year& operator--() noexcept;
2) constexpr year operator--(int) noexcept;

Return value

1) A reference to this year after it has been decremented (a postfix decrement).
2) A copy of the year before it has been decremented (a prefix decrement).

Example: operator--

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
   year y{2021};

    std::cout << y << " " << --y << "\n"; // constexpr year& operator++() noexcept
    std::cout << y << " " << y-- << "\n"; // constexpr year operator++(int) noexcept
    std::cout << y << "\n";

    return 0;
}
2021 2020
2020 2020
2019

Remarks

If the decremented result is less than -32768, it's set to 32767.

operator+=

Add days to this year.

constexpr year& operator+=(const years& y) noexcept;

Parameters

y
The number of years to add.

Return value

*this If the incremented result exceeds 32767, it overflows to -32768.

operator-=

Subtract days from this year.

constexpr year& operator-=(const years& y) noexcept;

Parameters

y
The number of years to subtract.

Return value

*this. If the decremented result is less than -32768, it's set to 32767.

operator int

Get the year value.

explicit constexpr operator int() const noexcept;

Return value

The value of the year

Example: operator int()

// compile using: /std:c++latest

 #include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    year y{2020};
    int yearValue = static_cast<int>(y);
    std::cout << yearValue;

    return 0;
}
2020

See also

<chrono>
year_month
year_month_day
year_month_day_last
year_month_weekday
year_month_weekday_last
Header Files Reference