| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 18427 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.date.creation">
- <title>Erstellen von Datumswerten</title>
- <para>
- <classname>Zend_Date</classname> unterstützt viele verschiedene Wege um eine neue Instanz
- von sich selbst zu erstellen. Da es verschiedene Notwendigkeiten gibt, werden die bequemsten
- Wege in diesem Kapitel gezeigt.
- </para>
- <sect2 id="zend.date.creation.actual">
- <title>Erstellen des aktuellen Datums</title>
- <para>
- Der einfachste Weg der Erstellung eines Datumsobjektes ist es ein aktuelles Datum zu
- erstellen. Man kann entweder eine neue Instanz mit <command>new Zend_Date()</command>
- erstellen, oder die bequemere statische Methode
- <methodname>Zend_Date::now()</methodname> verwenden wobei beide das aktuelle Datum als
- neue Instanz von <classname>Zend_Date</classname> zurückgeben. Das aktuelle Datum
- enthält immer das aktuelle Datum und die Zeit für die aktuell gesetzte Zeitzone.
- </para>
- <example id="zend.date.creation.actual.example-1">
- <title>Datum durch Instanz erstellen</title>
- <para>
- Datumserstellung durch Erzeugen einer neuen Instanz bedeutet das man keinen
- Parameter angeben muß. Natürlich gibt es mehrere Parameter die später beschrieben
- werden aber normalerweise ist das der einfachste und meist genutzte Weg um das
- aktuelle Datum als <classname>Zend_Date</classname> Instanz zu erhalten.
- </para>
- <programlisting language="php"><![CDATA[
- $date = new Zend_Date();
- ]]></programlisting>
- </example>
- <example id="zend.date.creation.actual.example-2">
- <title>Statische Erstellung eines Datums</title>
- <para>
- Machmal ist es einfacher eine statische Methode für die Erstellung eines Datums zu
- verwenden. Hierfür kann die <emphasis><methodname>now()</methodname></emphasis>
- Methode verwendet werden. Sie gibt eine neue Instanz von
- <classname>Zend_Date</classname> auf die gleiche Art und Weise zurück wie wenn man
- <command>new Zend_Date()</command> Verwenden würde. Es wird aber immer das aktuelle
- Datum zurückgegeben und das kann auch nur durch die Angabe von optionalen
- Parametern geändert werden.
- </para>
- <programlisting language="php"><![CDATA[
- $date = Zend_Date::now();
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.date.creation.database">
- <title>Erstellen von Datumswerten von einer Datenbank</title>
- <para>
- Datenbanken werden oft verwendet um Datumswerte zu speichern. Aber das Problem ist, das
- jede Datenbank Ihre Datumswerte in einem anderen Weg ausgibt. <emphasis>MsSQL</emphasis>
- Datenbanken verwenden eine etwas andere Standardausgabe von Datumswerten als
- <emphasis>MySQL</emphasis> Datenbanken. Aber zur Vereinfachung macht es
- <classname>Zend_Date</classname> sehr simpel ein Datum von einem Datumswert einer
- Datenbank zu erstellen.
- </para>
- <para>
- Natürlich kann jeder Datenbank gesagt werden das Sie die Ausgabe einer definierten
- Spalte in einen speziellen Wert konvertiert. Zum Beispiel können ein
- <emphasis>datetime</emphasis> Wert so konvertiert werden das ein Minutenwert ausgegeben
- wird. Aber das benötigt viel Zeit und oft müssen Datumswerte auf eine andere Art und
- Weise bearbeitet werden als bei der Erstellung der Datenbankabfrage gedacht wurde.
- </para>
- <para>
- Deswegen gibt es einen schnellen und einen bequemen Weg ein Datum von Datenbankwerten zu
- erstellen.
- </para>
- <example id="zend.date.creation.database.example-1">
- <title>Schnelle Erstellung eines Datums von Datumswerten einer Datenbank</title>
- <para>
- Von allen Datenbanken ist bekannt das Sie Abfragen so schnell wie möglich
- bearbeiten. Sie wurden erstellt um schnell zu arbeiten und zu antworten. Der
- Schnellste Weg um Datumswerte zu bearbeiten ist es aus der Datenbank Unit Timestamps
- zu erhalten. Alle Datenbanken speichern Datumswerte intern als Timestamps (nicht
- Unix Timestamps). Das bedeutet das die Zeit für die Erstellung eines Timestamps
- durch eine Abfrage viel kleiner ist als die Konvertierung in ein spezielles Format.
- </para>
- <programlisting language="php"><![CDATA[
- // SELECT UNIX_TIMESTAMP(my_datetime_column) FROM my_table
- $date = new Zend_Date($unixtimestamp, Zend_Date::TIMESTAMP);
- ]]></programlisting>
- </example>
- <example id="zend.date.creation.database.example-2">
- <title>Bequeme Erstellung eines Datums von Datumswerten einer Datenbank</title>
- <para>
- Die Standardausgabe von allen Datenbanken ist leicht unterschiedlich selbst wenn
- diese auf den ersten Blick gleich ausschauen. Aber alle sind Teil des
- <acronym>ISO</acronym> Standards und durch Ihn beschrieben. Deshalb liegt der
- einfachste Weg ein Datum zu erstellen in der Verwendung von
- <constant>Zend_Date::ISO_8601</constant>. Datenbanken von denen bekannt ist das
- Sie durch <constant>Zend_Date::ISO_8601</constant> erkannt werden sind zum
- Beispiel <emphasis>MySQL</emphasis> und <emphasis>MsSQL</emphasis>. Aber alle
- Datenbanken können eine <acronym>ISO-8601</acronym> Repräsentation von Datumsspalten
- ausgeben. <acronym>ISO-8601</acronym> hat den großen Vorteil das es menschlich
- lesbar ist. Der Nachteil ist das <acronym>ISO-8601</acronym> mehr Zeit zur
- Berechnung benötigt als ein einfacher Unix Timestamp. Es soll auch erwähnt werden
- das Unix Timestamps nur für Datumswerte nach dem 1 Jänner 1970 unterstützt werden.
- </para>
- <programlisting language="php"><![CDATA[
- // SELECT datecolumn FROM my_table
- $date = new Zend_Date($datecolumn, Zend_Date::ISO_8601);
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.date.creation.array">
- <title>Erstellung eines Datums von einem Array</title>
- <para>
- Datumswerte können auch durch die Verwendung eines Arrays erstellt werden. Das ist ein
- einfacher und leichter Weg. Die verwendeten Array Schlüssel sind:
- </para>
- <itemizedlist mark='opencircle'>
- <listitem>
- <para>
- <emphasis>day</emphasis>: Tag des Datums als Zahl
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>month</emphasis>: Monat des Datums als Zahl
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>year</emphasis>: Vollständiges Jahr des Datums
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>hour</emphasis>: Stunde des Datums
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>minute</emphasis>: Minute des Datums
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>second</emphasis>: Sekunde des Datums
- </para>
- </listitem>
- </itemizedlist>
- <example id="zend.date.creation.array.example">
- <title>Erstellen eines Datums durch ein Array</title>
- <para>
- Normalerweise wird ein komplettes Datumsarray für die Erstellung einer neuen Instanz
- des Datums angegeben werden. Aber wenn nicht alle Werte angegeben werden, werden die
- nicht angegebenen Arraywerte genullt. Das bedeutet das wenn z.B. keine Stunde
- angegeben wird, die Stunde <emphasis>0</emphasis> verwendet wird.
- </para>
- <programlisting language="php"><![CDATA[
- $datearray = array('year' => 2006,
- 'month' => 4,
- 'day' => 18,
- 'hour' => 12,
- 'minute' => 3,
- 'second' => 10);
- $date = new Zend_Date($datearray);
- ]]></programlisting>
- <programlisting language="php"><![CDATA[
- $datearray = array('year' => 2006, 'month' => 4, 'day' => 18);
- $date = new Zend_Date($datearray);
- ]]></programlisting>
- </example>
- </sect2>
- </sect1>
|