<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 15851 -->
<!-- Reviewed: no -->
<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 der selben Klasse und der selben
        Methode 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>

        <para>
            <itemizedlist mark='opencircle'>
                <listitem>
                    <para>
                        UNIX Zeitpunkte
                    </para>
                    <para>
                        Alle Daten und Zeiten, selbst die mehrdeutigen (z.B. kein Jahr), sind intern
                        dargestellt in absoluten Momenten der Zeit, repräsentiert als UNIX Zeitpunkt
                        welcher die Differenz zwischen der gewünschten Zeit und dem 01.Jänner 1970
                        00:00:00 GMT/UTC darstellt. Das ist nur deshalb möglich weil
                        <classname>Zend_Date</classname> nicht durch UNIX Zeitpunkte limitiert ist
                        und auch nicht durch Integer Zahlen. Die BCMath Erweiterung wird benötigt um
                        extrem große Daten ausserhalb des Bereichs vom Freitag dem 13.Dezember 1901
                        20:45:54 GMT bis zum 19.Jänner 2038 03:14:07 GMT 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
                        ausgedrückt als drei Stunden nach dem 01.Jänner.1970 00:00:00 GMT/UTC bzw.
                        0 + 3 * 60 * 60 = 10800 dargestellt.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        PHP Funktionen
                    </para>
                    <para>
                        Wo es möglich ist verwendet <classname>Zend_Date</classname> normalerweise
                        PHP Funktionen um die Geschwindigkeit zu erhöhen.
                    </para>
                </listitem>
            </itemizedlist>
        </para>

    </sect2>

</sect1>
<!--vim:se ts=4 sw=4 et:-->
