<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/datetime.examples.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'datetime.examples-arithmetic.php',
    1 => 'Rechnen mit Datum und Uhrzeit',
    2 => 'Rechnen mit Datum und Uhrzeit',
  ),
  'up' => 
  array (
    0 => 'datetime.examples.php',
    1 => 'Beispiele',
  ),
  'prev' => 
  array (
    0 => 'datetime.examples.php',
    1 => 'Beispiele',
  ),
  'next' => 
  array (
    0 => 'class.datetime.php',
    1 => 'DateTime',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/datetime/examples.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="datetime.examples-arithmetic" class="section">
  <h2 class="title">Rechnen mit Datum und Uhrzeit</h2>
  <p class="para">
   Die folgenden Beispiele zeigen einige Fallstricke beim Rechnen mit Datum
   und Uhrzeit bezüglich der Sommerzeitumstellungen sowie der Monate mit
   unterschiedlicher Anzahl von Tagen.
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 DateTimeImmutable::add/sub addiert Intervalle, die die verstrichene Zeit umfassen</strong></p>
    <div class="example-contents"><p>
     Wenn PT24H über den Zeitpunkt einer Sommerzeitumstellung hinzugefügt
     wird, scheinen 23/25 Stunden hinzugefügt zu werden (bei den meisten
     Zeitzonen).
    </p></div>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$dt </span><span style="color: #007700">= new </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">(</span><span style="color: #DD0000">"2015-11-01 00:00:00"</span><span style="color: #007700">, new </span><span style="color: #0000BB">DateTimeZone</span><span style="color: #007700">(</span><span style="color: #DD0000">"America/New_York"</span><span style="color: #007700">));<br />echo </span><span style="color: #DD0000">"Beginn: "</span><span style="color: #007700">, </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d H:i:s P"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$dt </span><span style="color: #007700">= </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">add</span><span style="color: #007700">(new </span><span style="color: #0000BB">DateInterval</span><span style="color: #007700">(</span><span style="color: #DD0000">"PT3H"</span><span style="color: #007700">));<br />echo </span><span style="color: #DD0000">"Ende:   "</span><span style="color: #007700">, </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d H:i:s P"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;</span></span></code></div>
    </div>

    <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive cdata"><pre>
Beginn: 2015-11-01 00:00:00 -04:00
Ende:   2015-11-01 02:00:00 -05:00
</pre></div>
    </div>
   </div>
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Beispiel #2 DateTimeImmutable::modify und strtotime erhöhen oder verringern die Werte einzelner Komponenten</strong></p>
    <div class="example-contents"><p>
     Wenn +24 Stunden über den Zeitpunkt einer Sommerzeitumstellung
     hinzugefügt werden, werden genau 24 Stunden hinzugefügt, wie sie in der
     Datum/Zeit-Zeichenkette zu sehen sind (es sei denn, die Anfangs- oder
     Endzeit liegt auf einem Übergangspunkt).
    </p></div>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$dt </span><span style="color: #007700">= new </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">(</span><span style="color: #DD0000">"2015-11-01 00:00:00"</span><span style="color: #007700">, new </span><span style="color: #0000BB">DateTimeZone</span><span style="color: #007700">(</span><span style="color: #DD0000">"America/New_York"</span><span style="color: #007700">));<br />echo </span><span style="color: #DD0000">"Beginn: "</span><span style="color: #007700">, </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d H:i:s P"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$dt </span><span style="color: #007700">= </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">modify</span><span style="color: #007700">(</span><span style="color: #DD0000">"+24 hours"</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"Ende:   "</span><span style="color: #007700">, </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d H:i:s P"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;</span></span></code></div>
    </div>

    <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive cdata"><pre>
Beginn: 2015-11-01 00:00:00 -04:00
Ende:   2015-11-02 00:00:00 -05:00
</pre></div>
    </div>
   </div>
  </p>
  <p class="para">
   <div class="example" id="example-3">
    <p><strong>Beispiel #3 Durch die Addition oder Subtraktion von Zeiten kann das Datum über- oder unterschritten werden</strong></p>
    <div class="example-contents"><p>
     Zum Beispiel ergibt der 31. Januar + 1 Monat den 2. März (Schaltjahr)
     oder den 3. März (normales Jahr).
    </p></div>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"Normales Jahr:\n"</span><span style="color: #007700">; </span><span style="color: #FF8000">// Februar hat 28 Tage<br /></span><span style="color: #0000BB">$dt </span><span style="color: #007700">= new </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">(</span><span style="color: #DD0000">"2015-01-31 00:00:00"</span><span style="color: #007700">, new </span><span style="color: #0000BB">DateTimeZone</span><span style="color: #007700">(</span><span style="color: #DD0000">"America/New_York"</span><span style="color: #007700">));<br />echo </span><span style="color: #DD0000">"Beginn: "</span><span style="color: #007700">, </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d H:i:s P"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$dt </span><span style="color: #007700">= </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">modify</span><span style="color: #007700">(</span><span style="color: #DD0000">"+1 month"</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"Ende:   "</span><span style="color: #007700">, </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d H:i:s P"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #DD0000">"Schaltjahr:\n"</span><span style="color: #007700">; </span><span style="color: #FF8000">// Februar hat 29 Tage<br /></span><span style="color: #0000BB">$dt </span><span style="color: #007700">= new </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">(</span><span style="color: #DD0000">"2016-01-31 00:00:00"</span><span style="color: #007700">, new </span><span style="color: #0000BB">DateTimeZone</span><span style="color: #007700">(</span><span style="color: #DD0000">"America/New_York"</span><span style="color: #007700">));<br />echo </span><span style="color: #DD0000">"Beginn: "</span><span style="color: #007700">, </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d H:i:s P"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$dt </span><span style="color: #007700">= </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">modify</span><span style="color: #007700">(</span><span style="color: #DD0000">"+1 month"</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"Ende:   "</span><span style="color: #007700">, </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d H:i:s P"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;</span></span></code></div>
    </div>

    <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive cdata"><pre>
Normales Jahr:
Beginn: 2015-01-31 00:00:00 -05:00
Ende:   2015-03-03 00:00:00 -05:00
Schaltjahr:
Beginn: 2016-01-31 00:00:00 -05:00
Ende:   2016-03-02 00:00:00 -05:00
</pre></div>
    </div>
    <div class="example-contents"><p>
     Um den letzten Tag des nächsten Monats zu erhalten (d. h. um den Überlauf
     zu verhindern), gibt es das Format <code class="literal">last day of</code>.
    </p></div>
    <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"Normales Jahr:\n"</span><span style="color: #007700">; </span><span style="color: #FF8000">// Februar hat 28 Tage<br /></span><span style="color: #0000BB">$dt </span><span style="color: #007700">= new </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">(</span><span style="color: #DD0000">"2015-01-31 00:00:00"</span><span style="color: #007700">, new </span><span style="color: #0000BB">DateTimeZone</span><span style="color: #007700">(</span><span style="color: #DD0000">"America/New_York"</span><span style="color: #007700">));<br />echo </span><span style="color: #DD0000">"Beginn: "</span><span style="color: #007700">, </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d H:i:s P"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$dt </span><span style="color: #007700">= </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">modify</span><span style="color: #007700">(</span><span style="color: #DD0000">"last day of next month"</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"Ende:   "</span><span style="color: #007700">, </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d H:i:s P"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #DD0000">"Schaltjahr:\n"</span><span style="color: #007700">; </span><span style="color: #FF8000">// Februar hat 29 Tage<br /></span><span style="color: #0000BB">$dt </span><span style="color: #007700">= new </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">(</span><span style="color: #DD0000">"2016-01-31 00:00:00"</span><span style="color: #007700">, new </span><span style="color: #0000BB">DateTimeZone</span><span style="color: #007700">(</span><span style="color: #DD0000">"America/New_York"</span><span style="color: #007700">));<br />echo </span><span style="color: #DD0000">"Beginn: "</span><span style="color: #007700">, </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d H:i:s P"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$dt </span><span style="color: #007700">= </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">modify</span><span style="color: #007700">(</span><span style="color: #DD0000">"last day of next month"</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"Ende:   "</span><span style="color: #007700">, </span><span style="color: #0000BB">$dt</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">"Y-m-d H:i:s P"</span><span style="color: #007700">), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;</span></span></code></div>
    </div>

    <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p></div>
    <div class="example-contents screen">
<div class="annotation-interactive cdata"><pre>
Normales Jahr:
Beginn: 2015-01-31 00:00:00 -05:00
Ende:   2015-02-28 00:00:00 -05:00
Schaltjahr:
Beginn: 2016-01-31 00:00:00 -05:00
Ende:   2016-02-29 00:00:00 -05:00
</pre></div>
    </div>
   </div>
  </p>
 </div><?php manual_footer($setup); ?>