<!DOCTYPE html><html lang='en'><head><title>[time.zone.timezone]</title><meta charset='UTF-8'/><link rel='stylesheet' type='text/css' href='14882.css'/><link rel='stylesheet' type='text/css' href='expanded.css' title='Notes and examples expanded'/><link rel='alternate stylesheet' type='text/css' href='colored.css' title='Notes and examples colored'/><link rel='alternate stylesheet' type='text/css' href='collapsed.css' title='Notes and examples collapsed'/><link rel='icon' href='icon.png'/></head><body><div class='wrapper'><h1 ><a class='secnum' style='min-width:73pt'>26</a> Time library <a class='abbr_ref' href='./#time'>[time]</a></h1><h2 ><a class='secnum' style='min-width:88pt'>26.10</a> Time zones <a class='abbr_ref' href='time.zone#timezone'>[time.zone]</a></h2><h3 ><a class='secnum' style='min-width:103pt'>26.10.5</a> Class <span class='texttt'>time_&shy;zone</span> <a class='abbr_ref'>[time.zone.timezone]</a></h3><div id='time.zone.overview' class='section'><h4 ><a class='secnum' href='#time.zone.overview' style='min-width:118pt'>26.10.5.1</a> Overview <a class='abbr_ref' href='time.zone.overview'>[time.zone.overview]</a></h4><span class='indexparent'><a class='index' id='lib:time_zone'></a></span><pre class='codeblock'>
<span class='keyword'>namespace</span> std<span class='operator'>:</span><span class='operator'>:</span>chrono <span class='curlybracket'>{</span>
  <span class='keyword'>class</span> time_zone <span class='curlybracket'>{</span>
  <span class='keyword'>public</span><span class='operator'>:</span>
    time_zone<span class='parenthesis'>(</span>time_zone<span class='operator'>&amp;</span><span class='operator'>&amp;</span><span class='parenthesis'>)</span> <span class='operator'>=</span> <span class='keyword'>default</span>;
    time_zone<span class='operator'>&amp;</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='parenthesis'>(</span>time_zone<span class='operator'>&amp;</span><span class='operator'>&amp;</span><span class='parenthesis'>)</span> <span class='operator'>=</span> <span class='keyword'>default</span>;

    <span class='comment'>// unspecified additional constructors</span>

    string_view name<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='keyword'>noexcept</span>;

    <span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Duration<span class='anglebracket'>&gt;</span> sys_info   get_info<span class='parenthesis'>(</span><span class='keyword'>const</span> sys_time<span class='anglebracket'>&lt;</span>Duration<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> st<span class='parenthesis'>)</span>   <span class='keyword'>const</span>;
    <span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Duration<span class='anglebracket'>&gt;</span> local_info get_info<span class='parenthesis'>(</span><span class='keyword'>const</span> local_time<span class='anglebracket'>&lt;</span>Duration<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> tp<span class='parenthesis'>)</span> <span class='keyword'>const</span>;

    <span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Duration<span class='anglebracket'>&gt;</span>
      sys_time<span class='anglebracket'>&lt;</span>common_type_t<span class='anglebracket'>&lt;</span>Duration, seconds<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
        to_sys<span class='parenthesis'>(</span><span class='keyword'>const</span> local_time<span class='anglebracket'>&lt;</span>Duration<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> tp<span class='parenthesis'>)</span> <span class='keyword'>const</span>;

    <span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Duration<span class='anglebracket'>&gt;</span>
      sys_time<span class='anglebracket'>&lt;</span>common_type_t<span class='anglebracket'>&lt;</span>Duration, seconds<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
        to_sys<span class='parenthesis'>(</span><span class='keyword'>const</span> local_time<span class='anglebracket'>&lt;</span>Duration<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> tp, choose z<span class='parenthesis'>)</span> <span class='keyword'>const</span>;

    <span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Duration<span class='anglebracket'>&gt;</span>
      local_time<span class='anglebracket'>&lt;</span>common_type_t<span class='anglebracket'>&lt;</span>Duration, seconds<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
        to_local<span class='parenthesis'>(</span><span class='keyword'>const</span> sys_time<span class='anglebracket'>&lt;</span>Duration<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> tp<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
  <span class='curlybracket'>}</span>;
<span class='curlybracket'>}</span>
</pre><div class='para' id='time.zone.overview-1'><div class='marginalizedparent'><a class='marginalized' href='#time.zone.overview-1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9439'>#</a></div><div id='time.zone.overview-1.sentence-1' class='sentence'>A <span class='texttt'>time_&shy;zone</span> represents all time zone transitions
for a specific geographic area<a class='hidden_link' href='#time.zone.overview-1.sentence-1'>.</a></div> <div id='time.zone.overview-1.sentence-2' class='sentence'><span class='texttt'>time_&shy;zone</span> construction is unspecified,
and performed as part of database initialization<a class='hidden_link' href='#time.zone.overview-1.sentence-2'>.</a></div> <div id='time.zone.overview-1.note-1' class='note'>[<span style='white-space:nowrap'> </span><a class='note_link' href='#time.zone.overview-1.note-1'><span class='textit'>Note</span></a><div class='noteBody'><span class='textit'>:</span> <div id='time.zone.overview-1.sentence-3' class='sentence'><span class='texttt'><span class='keyword'>const</span> time_&shy;zone</span> objects can be accessed
via functions such as <span class='texttt'>locate_&shy;zone</span><a class='hidden_link' href='#time.zone.overview-1.sentence-3'>.</a></div> —<span style='white-space:nowrap'> </span><i>end note</i></div><span style='white-space:nowrap'> </span>]</div> </div></div><div id='time.zone.members' class='section'><h4 ><a class='secnum' href='#time.zone.members' style='min-width:118pt'>26.10.5.2</a> Member functions <a class='abbr_ref' href='time.zone.members'>[time.zone.members]</a></h4><span class='indexparent'><a class='index' id='lib:name,time_zone'></a></span><span class='indexparent'><a class='index' id='lib:time_zone,name'></a></span><div class='itemdecl' id='time.zone.members-itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#time.zone.members-itemdecl:1'>🔗</a></div><code class='itemdeclcode'>string_view name<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='keyword'>const</span> <span class='keyword'>noexcept</span>;
</code></div><div class='itemdescr'></div><div class='para' id='time.zone.members-1'><div class='marginalizedparent'><a class='marginalized' href='#time.zone.members-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9457'>#</a></div><div id='time.zone.members-1.sentence-1' class='sentence'><span class='textit'>Returns:</span> The name of the <span class='texttt'>time_&shy;zone</span><a class='hidden_link' href='#time.zone.members-1.sentence-1'>.</a></div></div></div><div class='para' id='time.zone.members-2'><div class='marginalizedparent'><a class='marginalized' href='#time.zone.members-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9460'>#</a></div><div id='time.zone.members-2.example-1' class='example'>[<span style='white-space:nowrap'> </span><a class='example_link' href='#time.zone.members-2.example-1'><span class='textit'>Example</span></a><div class='exampleBody'><span class='textit'>:</span> <div id='time.zone.members-2.sentence-1' class='sentence'><span class='texttt'><span class='literal'>"America/New_&shy;York"</span></span><a class='hidden_link' href='#time.zone.members-2.sentence-1'>.</a></div> —<span style='white-space:nowrap'> </span><i>end example</i></div><span style='white-space:nowrap'> </span>]</div> </div></div><span class='indexparent'><a class='index' id='lib:get_info,time_zone'></a></span><span class='indexparent'><a class='index' id='lib:time_zone,get_info'></a></span><div class='itemdecl' id='time.zone.members-itemdecl:2'><div class='marginalizedparent'><a class='itemDeclLink' href='#time.zone.members-itemdecl:2'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Duration<span class='anglebracket'>&gt;</span>
  sys_info get_info<span class='parenthesis'>(</span><span class='keyword'>const</span> sys_time<span class='anglebracket'>&lt;</span>Duration<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> st<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
</code></div><div class='itemdescr'></div><div class='para' id='time.zone.members-3'><div class='marginalizedparent'><a class='marginalized' href='#time.zone.members-3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9473'>#</a></div><div id='time.zone.members-3.sentence-1' class='sentence'><span class='textit'>Returns:</span> 
A <span class='texttt'>sys_&shy;info</span> <span class='texttt'>i</span> for which
<span class='texttt'>st</span> is in the range <span class='texttt'>[</span><span class='texttt'>i<span class='operator'>.</span>begin, i<span class='operator'>.</span>end</span><span class='texttt'>)</span><a class='hidden_link' href='#time.zone.members-3.sentence-1'>.</a></div></div></div><span class='indexparent'><a class='index' id='lib:get_info,time_zone_'></a></span><span class='indexparent'><a class='index' id='lib:time_zone,get_info_'></a></span><div class='itemdecl' id='time.zone.members-itemdecl:3'><div class='marginalizedparent'><a class='itemDeclLink' href='#time.zone.members-itemdecl:3'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Duration<span class='anglebracket'>&gt;</span>
  local_info get_info<span class='parenthesis'>(</span><span class='keyword'>const</span> local_time<span class='anglebracket'>&lt;</span>Duration<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> tp<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
</code></div><div class='itemdescr'></div><div class='para' id='time.zone.members-4'><div class='marginalizedparent'><a class='marginalized' href='#time.zone.members-4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9486'>#</a></div><div id='time.zone.members-4.sentence-1' class='sentence'><span class='textit'>Returns:</span> 
A <span class='texttt'>local_&shy;info</span> for <span class='texttt'>tp</span><a class='hidden_link' href='#time.zone.members-4.sentence-1'>.</a></div></div></div><span class='indexparent'><a class='index' id='lib:to_sys,time_zone'></a></span><span class='indexparent'><a class='index' id='lib:time_zone,to_sys'></a></span><div class='itemdecl' id='time.zone.members-itemdecl:4'><div class='marginalizedparent'><a class='itemDeclLink' href='#time.zone.members-itemdecl:4'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Duration<span class='anglebracket'>&gt;</span>
  sys_time<span class='anglebracket'>&lt;</span>common_type_t<span class='anglebracket'>&lt;</span>Duration, seconds<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
    to_sys<span class='parenthesis'>(</span><span class='keyword'>const</span> local_time<span class='anglebracket'>&lt;</span>Duration<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> tp<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
</code></div><div class='itemdescr'></div><div class='para' id='time.zone.members-5'><div class='marginalizedparent'><a class='marginalized' href='#time.zone.members-5'>5</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9499'>#</a></div><div id='time.zone.members-5.sentence-1' class='sentence'><span class='textit'>Returns:</span> 
A <span class='texttt'>sys_&shy;time</span> that is at least as fine as <span class='texttt'>seconds</span>,
and will be finer if the argument <span class='texttt'>tp</span> has finer precision<a class='hidden_link' href='#time.zone.members-5.sentence-1'>.</a></div> <div id='time.zone.members-5.sentence-2' class='sentence'>This <span class='texttt'>sys_&shy;time</span> is the UTC equivalent of <span class='texttt'>tp</span>
according to the rules of this <span class='texttt'>time_&shy;zone</span><a class='hidden_link' href='#time.zone.members-5.sentence-2'>.</a></div></div></div><div class='para' id='time.zone.members-6'><div class='marginalizedparent'><a class='marginalized' href='#time.zone.members-6'>6</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9506'>#</a></div><div id='time.zone.members-6.sentence-1' class='sentence'><span class='textit'>Throws:</span> 
If the conversion from <span class='texttt'>tp</span> to a <span class='texttt'>sys_&shy;time</span> is ambiguous,
throws <span class='texttt'>ambiguous_&shy;local_&shy;time</span><a class='hidden_link' href='#time.zone.members-6.sentence-1'>.</a></div> <div id='time.zone.members-6.sentence-2' class='sentence'>If the <span class='texttt'>tp</span> represents a non-existent time between two UTC <span class='texttt'>time_&shy;points</span>,
throws <span class='texttt'>nonexistent_&shy;local_&shy;time</span><a class='hidden_link' href='#time.zone.members-6.sentence-2'>.</a></div></div></div><span class='indexparent'><a class='index' id='lib:to_sys,time_zone_'></a></span><span class='indexparent'><a class='index' id='lib:time_zone,to_sys_'></a></span><div class='itemdecl' id='time.zone.members-itemdecl:5'><div class='marginalizedparent'><a class='itemDeclLink' href='#time.zone.members-itemdecl:5'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Duration<span class='anglebracket'>&gt;</span>
  sys_time<span class='anglebracket'>&lt;</span>common_type_t<span class='anglebracket'>&lt;</span>Duration, seconds<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
    to_sys<span class='parenthesis'>(</span><span class='keyword'>const</span> local_time<span class='anglebracket'>&lt;</span>Duration<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> tp, choose z<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
</code></div><div class='itemdescr'></div><div class='para' id='time.zone.members-7'><div class='marginalizedparent'><a class='marginalized' href='#time.zone.members-7'>7</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9522'>#</a></div><div id='time.zone.members-7.sentence-1' class='sentence'><span class='textit'>Returns:</span> 
A <span class='texttt'>sys_&shy;time</span> that is at least as fine as <span class='texttt'>seconds</span>,
and will be finer if the argument <span class='texttt'>tp</span> has finer precision<a class='hidden_link' href='#time.zone.members-7.sentence-1'>.</a></div> <div id='time.zone.members-7.sentence-2' class='sentence'>This <span class='texttt'>sys_&shy;time</span> is the UTC equivalent of <span class='texttt'>tp</span>
according to the rules of this <span class='texttt'>time_&shy;zone</span><a class='hidden_link' href='#time.zone.members-7.sentence-2'>.</a></div> <div id='time.zone.members-7.sentence-3' class='sentence'>If the conversion from <span class='texttt'>tp</span> to a <span class='texttt'>sys_&shy;time</span> is ambiguous,
returns the earlier <span class='texttt'>sys_&shy;time</span> if <span class='texttt'>z <span class='operator'>=</span><span class='operator'>=</span> choose<span class='operator'>:</span><span class='operator'>:</span>earliest</span>, and
returns the later <span class='texttt'>sys_&shy;time</span> if <span class='texttt'>z <span class='operator'>=</span><span class='operator'>=</span> choose<span class='operator'>:</span><span class='operator'>:</span>latest</span><a class='hidden_link' href='#time.zone.members-7.sentence-3'>.</a></div> <div id='time.zone.members-7.sentence-4' class='sentence'>If the <span class='texttt'>tp</span> represents a non-existent time between two UTC <span class='texttt'>time_&shy;points</span>,
then the two UTC <span class='texttt'>time_&shy;points</span> will be the same,
and that UTC <span class='texttt'>time_&shy;point</span> will be returned<a class='hidden_link' href='#time.zone.members-7.sentence-4'>.</a></div></div></div><span class='indexparent'><a class='index' id='lib:to_local,time_zone'></a></span><span class='indexparent'><a class='index' id='lib:time_zone,to_local'></a></span><div class='itemdecl' id='time.zone.members-itemdecl:6'><div class='marginalizedparent'><a class='itemDeclLink' href='#time.zone.members-itemdecl:6'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Duration<span class='anglebracket'>&gt;</span>
  local_time<span class='anglebracket'>&lt;</span>common_type_t<span class='anglebracket'>&lt;</span>Duration, seconds<span class='anglebracket'>&gt;</span><span class='anglebracket'>&gt;</span>
    to_local<span class='parenthesis'>(</span><span class='keyword'>const</span> sys_time<span class='anglebracket'>&lt;</span>Duration<span class='anglebracket'>&gt;</span><span class='operator'>&amp;</span> tp<span class='parenthesis'>)</span> <span class='keyword'>const</span>;
</code></div><div class='itemdescr'></div><div class='para' id='time.zone.members-8'><div class='marginalizedparent'><a class='marginalized' href='#time.zone.members-8'>8</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9544'>#</a></div><div id='time.zone.members-8.sentence-1' class='sentence'><span class='textit'>Returns:</span> 
The <span class='texttt'>local_&shy;time</span> associated with <span class='texttt'>tp</span> and this <span class='texttt'>time_&shy;zone</span><a class='hidden_link' href='#time.zone.members-8.sentence-1'>.</a></div></div></div></div><div id='time.zone.nonmembers' class='section'><h4 ><a class='secnum' href='#time.zone.nonmembers' style='min-width:118pt'>26.10.5.3</a> Non-member functions <a class='abbr_ref' href='time.zone.nonmembers'>[time.zone.nonmembers]</a></h4><span class='indexparent'><a class='index' id='lib:operator==,time_zone'></a></span><span class='indexparent'><a class='index' id='lib:time_zone,operator=='></a></span><div class='itemdecl' id='time.zone.nonmembers-itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#time.zone.nonmembers-itemdecl:1'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>bool</span> <span class='keyword'>operator</span><span class='operator'>=</span><span class='operator'>=</span><span class='parenthesis'>(</span><span class='keyword'>const</span> time_zone<span class='operator'>&amp;</span> x, <span class='keyword'>const</span> time_zone<span class='operator'>&amp;</span> y<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
</code></div><div class='itemdescr'></div><div class='para' id='time.zone.nonmembers-1'><div class='marginalizedparent'><a class='marginalized' href='#time.zone.nonmembers-1'>1</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9557'>#</a></div><div id='time.zone.nonmembers-1.sentence-1' class='sentence'><span class='textit'>Returns:</span> <span class='texttt'>x<span class='operator'>.</span>name<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='operator'>=</span><span class='operator'>=</span> y<span class='operator'>.</span>name<span class='parenthesis'>(</span><span class='parenthesis'>)</span></span><a class='hidden_link' href='#time.zone.nonmembers-1.sentence-1'>.</a></div></div></div><span class='indexparent'><a class='index' id='lib:operator<,time_zone'></a></span><span class='indexparent'><a class='index' id='lib:time_zone,operator<'></a></span><div class='itemdecl' id='time.zone.nonmembers-itemdecl:2'><div class='marginalizedparent'><a class='itemDeclLink' href='#time.zone.nonmembers-itemdecl:2'>🔗</a></div><code class='itemdeclcode'><span class='keyword'>bool</span> <span class='keyword'>operator</span><span class='anglebracket'>&lt;</span><span class='parenthesis'>(</span><span class='keyword'>const</span> time_zone<span class='operator'>&amp;</span> x, <span class='keyword'>const</span> time_zone<span class='operator'>&amp;</span> y<span class='parenthesis'>)</span> <span class='keyword'>noexcept</span>;
</code></div><div class='itemdescr'></div><div class='para' id='time.zone.nonmembers-2'><div class='marginalizedparent'><a class='marginalized' href='#time.zone.nonmembers-2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9567'>#</a></div><div id='time.zone.nonmembers-2.sentence-1' class='sentence'><span class='textit'>Returns:</span> <span class='texttt'>x<span class='operator'>.</span>name<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='anglebracket'>&lt;</span> y<span class='operator'>.</span>name<span class='parenthesis'>(</span><span class='parenthesis'>)</span></span><a class='hidden_link' href='#time.zone.nonmembers-2.sentence-1'>.</a></div></div></div></div></div></body></html>