237 lines
6.8 KiB
Markdown
237 lines
6.8 KiB
Markdown
[time.zone.leap]
|
||
|
||
# 30 Time library [[time]](./#time)
|
||
|
||
## 30.11 Time zones [[time.zone]](time.zone#leap)
|
||
|
||
### 30.11.8 Class leap_second [time.zone.leap]
|
||
|
||
#### [30.11.8.1](#overview) Overview [[time.zone.leap.overview]](time.zone.leap.overview)
|
||
|
||
namespace std::chrono {class leap_second {public: leap_second(const leap_second&) = default;
|
||
leap_second& operator=(const leap_second&) = default; // unspecified additional constructorsconstexpr sys_seconds date() const noexcept; constexpr seconds value() const noexcept; };}
|
||
|
||
[1](#overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10136)
|
||
|
||
Objects of type leap_second representing
|
||
the date and value of the leap second insertions
|
||
are constructed and stored in the time zone database when initialized[.](#overview-1.sentence-1)
|
||
|
||
[2](#overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10141)
|
||
|
||
[*Example [1](#overview-example-1)*: for (auto& l : get_tzdb().leap_seconds)if (l <= sys_days{2018y/March/17d}) cout << l.date() << ": " << l.value() << '\n';
|
||
|
||
Produces the output:
|
||
|
||
```
|
||
1972-07-01 00:00:00: 1s
|
||
1973-01-01 00:00:00: 1s
|
||
1974-01-01 00:00:00: 1s
|
||
1975-01-01 00:00:00: 1s
|
||
1976-01-01 00:00:00: 1s
|
||
1977-01-01 00:00:00: 1s
|
||
1978-01-01 00:00:00: 1s
|
||
1979-01-01 00:00:00: 1s
|
||
1980-01-01 00:00:00: 1s
|
||
1981-07-01 00:00:00: 1s
|
||
1982-07-01 00:00:00: 1s
|
||
1983-07-01 00:00:00: 1s
|
||
1985-07-01 00:00:00: 1s
|
||
1988-01-01 00:00:00: 1s
|
||
1990-01-01 00:00:00: 1s
|
||
1991-01-01 00:00:00: 1s
|
||
1992-07-01 00:00:00: 1s
|
||
1993-07-01 00:00:00: 1s
|
||
1994-07-01 00:00:00: 1s
|
||
1996-01-01 00:00:00: 1s
|
||
1997-07-01 00:00:00: 1s
|
||
1999-01-01 00:00:00: 1s
|
||
2006-01-01 00:00:00: 1s
|
||
2009-01-01 00:00:00: 1s
|
||
2012-07-01 00:00:00: 1s
|
||
2015-07-01 00:00:00: 1s
|
||
2017-01-01 00:00:00: 1s
|
||
|
||
```
|
||
|
||
â *end example*]
|
||
|
||
#### [30.11.8.2](#members) Member functions [[time.zone.leap.members]](time.zone.leap.members)
|
||
|
||
[ð](#lib:date,leap_second)
|
||
|
||
`constexpr sys_seconds date() const noexcept;
|
||
`
|
||
|
||
[1](#members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10189)
|
||
|
||
*Returns*: The date and time at which the leap second was inserted[.](#members-1.sentence-1)
|
||
|
||
[ð](#lib:value,leap_second)
|
||
|
||
`constexpr seconds value() const noexcept;
|
||
`
|
||
|
||
[2](#members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10200)
|
||
|
||
*Returns*: +1s to indicate a positive leap second or-1s to indicate a negative leap second[.](#members-2.sentence-1)
|
||
|
||
[*Note [1](#members-note-1)*:
|
||
|
||
All leap seconds inserted up through 2022 were positive leap seconds[.](#members-2.sentence-2)
|
||
|
||
â *end note*]
|
||
|
||
#### [30.11.8.3](#nonmembers) Non-member functions [[time.zone.leap.nonmembers]](time.zone.leap.nonmembers)
|
||
|
||
[ð](#lib:operator==,leap_second)
|
||
|
||
`constexpr bool operator==(const leap_second& x, const leap_second& y) noexcept;
|
||
`
|
||
|
||
[1](#nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10217)
|
||
|
||
*Returns*: x.date() == y.date()[.](#nonmembers-1.sentence-1)
|
||
|
||
[ð](#lib:operator%3c=%3e,leap_second)
|
||
|
||
`constexpr strong_ordering operator<=>(const leap_second& x, const leap_second& y) noexcept;
|
||
`
|
||
|
||
[2](#nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10228)
|
||
|
||
*Returns*: x.date() <=> y.date()[.](#nonmembers-2.sentence-1)
|
||
|
||
[ð](#lib:operator==,leap_second_)
|
||
|
||
`template<class Duration>
|
||
constexpr bool operator==(const leap_second& x, const sys_time<Duration>& y) noexcept;
|
||
`
|
||
|
||
[3](#nonmembers-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10241)
|
||
|
||
*Returns*: x.date() == y[.](#nonmembers-3.sentence-1)
|
||
|
||
[ð](#lib:operator%3c,leap_second)
|
||
|
||
`template<class Duration>
|
||
constexpr bool operator<(const leap_second& x, const sys_time<Duration>& y) noexcept;
|
||
`
|
||
|
||
[4](#nonmembers-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10254)
|
||
|
||
*Returns*: x.date() < y[.](#nonmembers-4.sentence-1)
|
||
|
||
[ð](#lib:operator%3c,leap_second_)
|
||
|
||
`template<class Duration>
|
||
constexpr bool operator<(const sys_time<Duration>& x, const leap_second& y) noexcept;
|
||
`
|
||
|
||
[5](#nonmembers-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10267)
|
||
|
||
*Returns*: x < y.date()[.](#nonmembers-5.sentence-1)
|
||
|
||
[ð](#lib:operator%3e,leap_second)
|
||
|
||
`template<class Duration>
|
||
constexpr bool operator>(const leap_second& x, const sys_time<Duration>& y) noexcept;
|
||
`
|
||
|
||
[6](#nonmembers-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10280)
|
||
|
||
*Returns*: y < x[.](#nonmembers-6.sentence-1)
|
||
|
||
[ð](#lib:operator%3e,leap_second_)
|
||
|
||
`template<class Duration>
|
||
constexpr bool operator>(const sys_time<Duration>& x, const leap_second& y) noexcept;
|
||
`
|
||
|
||
[7](#nonmembers-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10293)
|
||
|
||
*Returns*: y < x[.](#nonmembers-7.sentence-1)
|
||
|
||
[ð](#lib:operator%3c=,leap_second)
|
||
|
||
`template<class Duration>
|
||
constexpr bool operator<=(const leap_second& x, const sys_time<Duration>& y) noexcept;
|
||
`
|
||
|
||
[8](#nonmembers-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10306)
|
||
|
||
*Returns*: !(y < x)[.](#nonmembers-8.sentence-1)
|
||
|
||
[ð](#lib:operator%3c=,leap_second_)
|
||
|
||
`template<class Duration>
|
||
constexpr bool operator<=(const sys_time<Duration>& x, const leap_second& y) noexcept;
|
||
`
|
||
|
||
[9](#nonmembers-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10319)
|
||
|
||
*Returns*: !(y < x)[.](#nonmembers-9.sentence-1)
|
||
|
||
[ð](#lib:operator%3e=,leap_second)
|
||
|
||
`template<class Duration>
|
||
constexpr bool operator>=(const leap_second& x, const sys_time<Duration>& y) noexcept;
|
||
`
|
||
|
||
[10](#nonmembers-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10332)
|
||
|
||
*Returns*: !(x < y)[.](#nonmembers-10.sentence-1)
|
||
|
||
[ð](#lib:operator%3e=,leap_second_)
|
||
|
||
`template<class Duration>
|
||
constexpr bool operator>=(const sys_time<Duration>& x, const leap_second& y) noexcept;
|
||
`
|
||
|
||
[11](#nonmembers-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10345)
|
||
|
||
*Returns*: !(x < y)[.](#nonmembers-11.sentence-1)
|
||
|
||
[ð](#lib:operator%3c=%3e,leap_second_)
|
||
|
||
`template<class Duration>
|
||
requires [three_way_comparable_with](cmp.concept#concept:three_way_comparable_with "17.12.4 Concept three_way_comparable [cmp.concept]")<sys_seconds, sys_time<Duration>>
|
||
constexpr auto operator<=>(const leap_second& x, const sys_time<Duration>& y) noexcept;
|
||
`
|
||
|
||
[12](#nonmembers-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L10359)
|
||
|
||
*Returns*: x.date() <=> y[.](#nonmembers-12.sentence-1)
|