<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: 18429 -->
<sect1 id="zend.date.definition.theory">
    <title>Theorie der Arbeitsweise</title>

    <para>
        Warum gibt es nur eine Klasse <classname>Zend_Date</classname> für das Arbeiten mit Daten
        und Zeiten im Zend Framework ?
    </para>

    <para>
        Viele Sprachen teilen das Arbeiten mit Zeiten und Kalendern in zwei Klassen. Aber Zend
        Framework strebt nach extremer Vereinfachung und die Entwickler zu zwingen, verschiedene
        Objekte mit verschiedenen Methoden für Zeiten und Daten zu verwenden, ist in vielen
        Situationen eine Belastung. Da die Methoden von <classname>Zend_Date</classname> das
        Arbeiten mit vieldeutigen Daten unterstützen, die möglicherweise nicht alle Datumsabschnitte
        beinhalten (Zeitalter, Jahr, Monat, Tag, Stunde, Minute, Sekunde, Zeitzone), können
        Entwickler die Flexibilität und die einfache Handhabung derselben Klasse und derselben
        Methoden geniessen, um die gleichen Änderungen durchzuführen (zum Beispiel Addieren,
        Subtrahieren, Vergleichen, Verbinden von Datumsabschnitten und vieles mehr). Das Aufteilen
        der Handhabung dieser Datumsabschnitte in verschiedene Klassen würde Komplikationen
        hervorrufen, wenn einfaches gemeinsames Arbeiten und eine kleine Lernkurve gewünscht sind.
        Eine einzige Klasse reduziert die Verdopplung von Code für gleichartige Arbeiten, ohne die
        Notwendigkeit einer komplexen Ableitungshirarchie.
    </para>

    <sect2 id="zend.date.theory.internals">
        <title>Internes</title>

        <itemizedlist mark='opencircle'>
            <listitem>
                <para>
                    <acronym>UNIX</acronym> Zeitpunkte
                </para>

                <para>
                    Alle Daten und Zeiten, selbst die mehrdeutigen (z.B. kein Jahr), sind intern
                    dargestellt in absoluten Zeitpunkten, repräsentiert als
                    <acronym>UNIX</acronym>-Zeitpunkt welcher die Differenz zwischen der gewünschten
                    Zeit und dem 01. Januar 1970 00:00:00 <acronym>GMT</acronym> darstellt. Das ist
                    nur deshalb möglich, weil <classname>Zend_Date</classname> nicht durch
                    <acronym>UNIX</acronym>-Zeitpunkte oder Integer-Zahlen limitert ist. Die BCMath
                    Erweiterung wird benötigt, um extrem große Daten außerhalb des Bereichs vom
                    Freitag dem 13.Dezember 1901 20:45:54 <acronym>GMT</acronym> bis zum 19. Januar
                    2038 03:14:07 <acronym>GMT</acronym> zu unterstützen. Zusätzlich können kleine
                    Mathematikfehler aufgrund der inhärenten Beschränkungen des Float-Datentyps
                    sowie durch Rundung auftreten, es sei denn, die BCMath Extension wird verwendet.
                </para>
            </listitem>

            <listitem>
                <para>
                    Datumsabschnitte als Offsets in Zeitpunken
                </para>

                <para>
                    Deswegen wird eine Objektinstanz, welche drei Stunden repräsentiert, als drei
                    Stunden nach dem 01. Januar 1970 00:00:00 <acronym>GMT</acronym> bzw.
                    0 + 3 * 60 * 60 = 10800 dargestellt.
                </para>
            </listitem>

            <listitem>
                <para>
                    <acronym>PHP</acronym> Funktionen
                </para>

                <para>
                    Wo es möglich ist, verwendet <classname>Zend_Date</classname> normalerweise
                    <acronym>PHP</acronym>-Funktionen, um die Geschwindigkeit zu erhöhen.
                </para>
            </listitem>
        </itemizedlist>
     </sect2>
</sect1>
