[time.zone.info.sys]

# 30 Time library [[time]](./#time)

## 30.11 Time zones [[time.zone]](time.zone#info.sys)

### 30.11.4 Information classes [[time.zone.info]](time.zone.info#sys)

#### 30.11.4.1 Class sys_info [time.zone.info.sys]

namespace std::chrono {struct sys_info { sys_seconds begin;
 sys_seconds end;
 seconds offset;
 minutes save;
 string abbrev; };}

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L9243)

A sys_info object can be obtained
from the combination of a time_zone and
either a sys_time or local_time[.](#1.sentence-1)

It can also be obtained from a zoned_time,
which is effectively a pair of a time_zone and sys_time[.](#1.sentence-2)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L9250)

[*Note [1](#note-1)*:

This type provides a low-level interface to time zone information[.](#2.sentence-1)

Typical conversions from sys_time to local_time will use this class implicitly, not explicitly[.](#2.sentence-2)

â *end note*]

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L9257)

The begin and end data members indicate that,
for the associated time_zone and time_point,
the offset and abbrev are in effect in the range [begin, end)[.](#3.sentence-1)

This information can be used to efficiently iterate the transitions of a time_zone[.](#3.sentence-2)

[4](#4)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L9265)

The offset data member indicates
the UTC offset in effect
for the associated time_zone and time_point[.](#4.sentence-1)

The relationship between local_time and sys_time is:offset = local_time - sys_time

[5](#5)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L9275)

The save data member is extra information not normally needed
for conversion between local_time and sys_time[.](#5.sentence-1)

If save != 0min, this sys_info is said to be on âdaylight savingâ time,
and offset - save suggests what offset this time_zone might use
if it were off daylight saving time[.](#5.sentence-2)

However, this information should not be taken as authoritative[.](#5.sentence-3)

The only sure way to get such information
is to query the time_zone with a time_point that returns a sys_info where save == 0min[.](#5.sentence-4)

There is no guarantee what time_point might return such a sys_info except that it is guaranteed not to be in the range [begin, end)
(if save != 0min for this sys_info)[.](#5.sentence-5)

[6](#6)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L9290)

The abbrev data member indicates
the current abbreviation used for the associated time_zone and time_point[.](#6.sentence-1)

Abbreviations are not unique among the time_zones,
and so one cannot reliably map abbreviations back to a time_zone and UTC offset[.](#6.sentence-2)

[ð](#lib:operator%3c%3c,sys_info)

`template<class charT, class traits>
  basic_ostream<charT, traits>&
    operator<<(basic_ostream<charT, traits>& os, const sys_info& r);
`

[7](#7)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L9305)

*Effects*: Streams out the sys_info object r in an unspecified format[.](#7.sentence-1)

[8](#8)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L9309)

*Returns*: os[.](#8.sentence-1)
