| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: 20766 -->
- <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
- Datum und die Zeit der aktuell gesetzten Zeitzone.
- </para>
- <example id="zend.date.creation.actual.example-1">
- <title>Datum durch Instanz erstellen</title>
- <para>
- Datumserstellung durch Erzeugen einer neuen Instanz bedeutet, dass man keinen
- Parameter angeben muß. Natürlich gibt es mehrere Parameter, die später beschrieben
- werden. Normalerweise ist das jedoch 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. Dieses Verhalten 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. Das Problem ist dabei,
- dass jede Datenbank Ihre Datumswerte in einer anderen Form ausgibt.
- <emphasis>MsSQL</emphasis> Datenbanken verwenden eine etwas andere Standardausgabe von
- Datumswerten als <emphasis>MySQL</emphasis> Datenbanken. 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 mitgeteilt werden, dass diese die Ausgabe einer
- definierten Spalte in einen speziellen Wert konvertiert. Zum Beispiel können ein
- <emphasis>datetime</emphasis> Wert so konvertiert werden, dass 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, dass Abfragen so schnell wie möglich bearbeitet
- werden. Sie wurden erstellt um schnell zu arbeiten und zu antworten. Der
- schnellste Weg um Datumswerte zu bearbeiten ist es aus der Datenbank
- <acronym>UNIX</acronym> Timestamps zu erhalten. Alle Datenbanken speichern
- Datumswerte intern als Timestamps (nicht UNIX Timestamps). Das bedeutet, dass 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 aussehen. Aber alle sind Teil des
- <acronym>ISO</acronym> Standards und durch diesen 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, dass
- diese 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, dass es menschlich
- lesbar ist. Der Nachteil ist, dass <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. Januar 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. Wenn nicht alle Werte angegeben werden, werden die
- nicht angegebenen Arraywerte genullt. Das bedeutet, dass 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>
|