| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- <?xml version="1.0" encoding="utf-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.date.creation">
- <title>Créer des dates</title>
- <para>
- <classname>Zend_Date</classname> permet de créer des instances d'elle même de
- plusieurs manières différentes. Nous allons voir ceci.
- </para>
- <sect2 id="zend.date.creation.actual">
- <title>Créer la date actuelle</title>
- <para>
- La manière la plus simple de créer la date actuelle est d'utiliser le
- constructeur <code>new Zend_Date()</code> ou encore la méthode statique
- <methodname>Zend_Date::now()</methodname>. Toutes les deux retournent une instance de
- <classname>Zend_Date</classname> avec la date actuelle. Elle est représentée par une
- date calendaire et un temps pour le fuseau horaire actuel du serveur.
- </para>
- <example id="zend.date.creation.actual.example-1">
- <title>Créer une date par instance</title>
- <para>
- Il n'y a pas de paramètres à passer au constructeur pour récupérer un objet
- <classname>Zend_Date</classname>. Certains paramètres sont cependant disponibles et
- nous y reviendrons.
- </para>
- <programlisting language="php"><![CDATA[
- $date = new Zend_Date();
- ]]></programlisting>
- </example>
- <example id="zend.date.creation.actual.example-2">
- <title>Créer une date par méthode statique</title>
- <para>
- La méthode statique <methodname>now()</methodname> a exactement le même effet qu'un
- passage par le constructeur. Cependant la méthode statique, elle, ne peut pas
- prendre de paramètres additionnels.
- </para>
- <programlisting language="php"><![CDATA[
- $date = Zend_Date::now();
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.date.creation.database">
- <title>Créer une date depuis une base de données</title>
- <para>
- Les bases de données sont souvent utilisées pour stocker des informations de
- dates. Mais elles ont toutes une implémentation et une représentation qui leur est
- propre. MSSQL par exemple manipule les dates de manières significativement différente
- de MySQL, par exemple. Heureusement, <classname>Zend_Date</classname> aide à simplifier
- le processus de création d'une date depuis une base de données.
- </para>
- <para>
- Il est possible de demander au serveur de base de données de formater la date
- dans un certain format. Mais ceci reste en général assez lourd, et doit être pensé à
- chaque fois.
- </para>
- <para>
- Nous avons donc des méthodes très pratiques et rapides dans
- <classname>Zend_Date</classname>, pour récupérer les dates depuis une base de
- données.
- </para>
- <example id="zend.date.creation.database.example-1">
- <title>Création d'une date depuis une base de données</title>
- <para>
- Toutes les bases de données doivent répondre extrêmement rapidement à leurs
- requêtes. Pour stocker une date de manière optimale dans une base, il faut utiliser
- un timestamp. En interne, tous les SGBDs représentent les dates sous forme de
- timestamp (non Unix). Ainsi, leur demander un timestamp sera toujours plus
- performant que de leur demander une date dans un format précis.
- </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>Création d'une date depuis une base de données dans un format</title>
- <para>
- La sortie de chaque base de données est différente même si elles se
- ressemblent. Cependant elles ont toutes des formats compatibles <constant>ISO</constant>.
- La manière la plus simple de créer une date depuis une base de données est
- d'utiliser <classname>Zend_Date::ISO_8601</classname>. Les SGBDs connus pour être
- conformes pour <classname>Zend_Date::ISO_8601</classname> sont MySQL, MSSQL par
- exemple, mais ils sont tous capables de retourner une représentation
- <constant>ISO8601</constant> d'une donnée date. <constant>ISO8601</constant> possède l'avantage
- d'être lisible et compréhensible par un humain. Son inconvénient est qu'il est
- légèrement plus lourd à traiter qu'un simple timestamp UNIX. En revanche ceux-ci ne
- supportent pas les dates inférieures au 1er Janvier 1970.
- </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>Créer des dates depuis un tableau</title>
- <para>
- Créer une date depuis un tableau est fréquent et pratique. Les clés du tableau
- sont :
- </para>
- <para>
- <itemizedlist mark="opencircle">
- <listitem>
- <para><emphasis>day</emphasis> : jour de la date, un
- nombre
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>month</emphasis> : mois de la date, un
- nombre
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>year</emphasis> : année complète de la
- date
- </para>
- </listitem>
- <listitem>
- <para><emphasis>hour</emphasis> : heures de la date</para>
- </listitem>
- <listitem>
- <para><emphasis>minute</emphasis> : minutes de la date</para>
- </listitem>
- <listitem>
- <para><emphasis>second</emphasis> : secondes de la date</para>
- </listitem>
- </itemizedlist>
- </para>
- <example id="zend.date.creation.array.example">
- <title>Créer une date depuis un tableau</title>
- <para>
- En temps normal on utilisera un tableau avec toutes ses clés. Si une clé est
- absente, la valeur qu'elle représente sera mise à la valeur zéro par défaut. Par
- exemple une tableau ne comportant pas la clé "<code>hour</code>", donnera naissance
- à une date ayant une partie heures à la valeur "<emphasis>0</emphasis>".
- </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>
|