<!DOCTYPE html><html lang='en'><head><title>[time.zone.exception.nonexist]</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#exception.nonexist'>[time.zone]</a></h2><h3 ><a class='secnum' style='min-width:103pt'>26.10.3</a> Exception classes <a class='abbr_ref' href='time.zone.exception#nonexist'>[time.zone.exception]</a></h3><h4 ><a class='secnum' style='min-width:118pt'>26.10.3.1</a> Class <span class='texttt'>nonexistent_&shy;local_&shy;time</span> <a class='abbr_ref'>[time.zone.exception.nonexist]</a></h4><span class='indexparent'><a class='index' id='lib:nonexistent_local_time'></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> nonexistent_local_time <span class='operator'>:</span> <span class='keyword'>public</span> runtime_error <span class='curlybracket'>{</span>
  <span class='keyword'>public</span><span class='operator'>:</span>
    <span class='keyword'>template</span><span class='anglebracket'>&lt;</span><span class='keyword'>class</span> Duration<span class='anglebracket'>&gt;</span>
      nonexistent_local_time<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='keyword'>const</span> local_info<span class='operator'>&amp;</span> i<span class='parenthesis'>)</span>;
  <span class='curlybracket'>}</span>;
<span class='curlybracket'>}</span>
</pre><div class='para' id='1'><div class='marginalizedparent'><a class='marginalized' href='#1'>1</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9114'>#</a></div><div id='1.sentence-1' class='sentence'><span class='texttt'>nonexistent_&shy;local_&shy;time</span> is thrown when
an attempt is made
to convert a non-existent <span class='texttt'>local_&shy;time</span> to a <span class='texttt'>sys_&shy;time</span>
without specifying <span class='texttt'>choose<span class='operator'>:</span><span class='operator'>:</span>earliest</span> or <span class='texttt'>choose<span class='operator'>:</span><span class='operator'>:</span>latest</span><a class='hidden_link' href='#1.sentence-1'>.</a></div> <span class='indexparent'><a class='index' id='lib:nonexistent_local_time,constructor'></a></span></div><div class='itemdecl' id='itemdecl:1'><div class='marginalizedparent'><a class='itemDeclLink' href='#itemdecl:1'>🔗</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>
  nonexistent_local_time<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='keyword'>const</span> local_info<span class='operator'>&amp;</span> i<span class='parenthesis'>)</span>;
</code></div><div class='itemdescr'></div><div class='para' id='2'><div class='marginalizedparent'><a class='marginalized' href='#2'>2</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9127'>#</a></div><div id='2.sentence-1' class='sentence'><span class='textit'>Requires:</span> <span class='texttt'>i<span class='operator'>.</span>result <span class='operator'>=</span><span class='operator'>=</span> local_&shy;info<span class='operator'>:</span><span class='operator'>:</span>nonexistent</span><a class='hidden_link' href='#2.sentence-1'>.</a></div></div></div><div class='para' id='3'><div class='marginalizedparent'><a class='marginalized' href='#3'>3</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9130'>#</a></div><div id='3.sentence-1' class='sentence'><span class='textit'>Effects:</span> 
Constructs a <span class='texttt'>nonexistent_&shy;local_&shy;time</span>
by initializing the base class with a sequence of <span class='texttt'><span class='keyword'>char</span></span>
equivalent to that produced by <span class='texttt'>os<span class='operator'>.</span>str<span class='parenthesis'>(</span><span class='parenthesis'>)</span></span>
initialized as shown below:</div><pre class='codeblock'>
ostringstream os;
os <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> tp <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> <span class='literal'>" is in a gap between\n"</span>
   <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> local_seconds<span class='curlybracket'>{</span>i<span class='operator'>.</span>first<span class='operator'>.</span>end<span class='operator'>.</span>time_since_epoch<span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='curlybracket'>}</span> <span class='operator'>+</span> i<span class='operator'>.</span>first<span class='operator'>.</span>offset <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> <span class='literal'>' '</span>
   <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> i<span class='operator'>.</span>first<span class='operator'>.</span>abbrev <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> <span class='literal'>" and\n"</span>
   <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> local_seconds<span class='curlybracket'>{</span>i<span class='operator'>.</span>second<span class='operator'>.</span>begin<span class='operator'>.</span>time_since_epoch<span class='parenthesis'>(</span><span class='parenthesis'>)</span><span class='curlybracket'>}</span> <span class='operator'>+</span> i<span class='operator'>.</span>second<span class='operator'>.</span>offset <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> <span class='literal'>' '</span>
   <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> i<span class='operator'>.</span>second<span class='operator'>.</span>abbrev
   <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> <span class='literal'>" which are both equivalent to\n"</span>
   <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> i<span class='operator'>.</span>first<span class='operator'>.</span>end <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> <span class='literal'>" UTC"</span>;
</pre></div></div><div class='para' id='4'><div class='marginalizedparent'><a class='marginalized' href='#4'>4</a></div><div class='itemdescr'><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/Eelis/draft73ca144c7e48612fe72742f9f6a5ec9ad6a934d2/source/time.tex#L9148'>#</a></div><div id='4.example-1' class='example'>[<span style='white-space:nowrap'> </span><a class='example_link' href='#4.example-1'><span class='textit'>Example</span></a><div class='exampleBody'><span class='textit'>:</span> <pre class='codeblock'>
<span class='preprocessordirective'>#include</span> <span class='anglebracket'>&lt;</span>chrono<span class='anglebracket'>&gt;</span>
<span class='preprocessordirective'>#include</span> <span class='anglebracket'>&lt;</span>iostream<span class='anglebracket'>&gt;</span>

<span class='keyword'>int</span> main<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='curlybracket'>{</span>
  <span class='keyword'>using</span> <span class='keyword'>namespace</span> std<span class='operator'>:</span><span class='operator'>:</span>chrono;
  <span class='keyword'>try</span> <span class='curlybracket'>{</span>
    <span class='keyword'>auto</span> zt <span class='operator'>=</span> zoned_time<span class='curlybracket'>{</span><span class='literal'>"America/New_York"</span>,
                         local_days<span class='curlybracket'>{</span>Sunday<span class='squarebracket'>[</span><span class='literal'>2</span><span class='squarebracket'>]</span><span class='operator'>/</span>March<span class='operator'>/</span><span class='literal'>2016</span><span class='curlybracket'>}</span> <span class='operator'>+</span> <span class='literal'>2h</span> <span class='operator'>+</span> <span class='literal'>30min</span><span class='curlybracket'>}</span>;
  <span class='curlybracket'>}</span> <span class='keyword'>catch</span> <span class='parenthesis'>(</span><span class='keyword'>const</span> nonexistent_local_time<span class='operator'>&amp;</span> e<span class='parenthesis'>)</span> <span class='curlybracket'>{</span>
    std<span class='operator'>:</span><span class='operator'>:</span>cout <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> e<span class='operator'>.</span>what<span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='anglebracket'>&lt;</span><span class='anglebracket'>&lt;</span> <span class='literal'>'\n'</span>;
  <span class='curlybracket'>}</span>
<span class='curlybracket'>}</span>
</pre><div id='4.sentence-1' class='sentence'>Produces the output:</div><div style='height:0.6em;display:block'></div><pre class='outputblock'>
2016-03-13 02:30:00 is in a gap between
2016-03-13 02:00:00 EST and
2016-03-13 03:00:00 EDT which are both equivalent to
2016-03-13 07:00:00 UTC
</pre> —<span style='white-space:nowrap'> </span><i>end example</i></div><span style='white-space:nowrap'> </span>]</div> </div></div></div></body></html>