<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.datetimeimmutable.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'datetimeimmutable.createfromformat.php',
    1 => 'DateTimeImmutable::createFromFormat',
    2 => 'Analyse une heure au format texte selon le format sp&eacute;cifi&eacute;.',
  ),
  'up' => 
  array (
    0 => 'class.datetimeimmutable.php',
    1 => 'DateTimeImmutable',
  ),
  'prev' => 
  array (
    0 => 'datetimeimmutable.construct.php',
    1 => 'DateTimeImmutable::__construct',
  ),
  'next' => 
  array (
    0 => 'datetimeimmutable.createfrominterface.php',
    1 => 'DateTimeImmutable::createFromInterface',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/datetime/datetimeimmutable/createfromformat.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="datetimeimmutable.createfromformat" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">DateTimeImmutable::createFromFormat</h1>
  <h1 class="refname">date_create_immutable_from_format</h1>
  <p class="verinfo">(PHP 5 &gt;= 5.5.0, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">DateTimeImmutable::createFromFormat</span> -- <span class="refname">date_create_immutable_from_format</span> &mdash; <span class="dc-title">Analyse une heure au format texte selon le format spécifié.
  </span></p>

 </div>

 <div class="refsect1 description" id="refsect1-datetimeimmutable.createfromformat-description">
  <h3 class="title">Description</h3>
  <p class="para">Style orienté objet</p>
  <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="modifier">static</span> <span class="methodname"><strong>DateTimeImmutable::createFromFormat</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$format</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$datetime</code></span>, <span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="class.datetimezone.php" class="type DateTimeZone">DateTimeZone</a></span></span> <code class="parameter">$timezone</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>): <span class="type"><span class="type"><a href="class.datetimeimmutable.php" class="type DateTimeImmutable">DateTimeImmutable</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">Style procédural</p>
  <div class="methodsynopsis dc-description"><span class="methodname"><a href="function.date-create-immutable-from-format.php" class="methodname">date_create_immutable_from_format</a></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$format</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$datetime</code></span>, <span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="class.datetimezone.php" class="type DateTimeZone">DateTimeZone</a></span></span> <code class="parameter">$timezone</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>): <span class="type"><span class="type"><a href="class.datetimeimmutable.php" class="type DateTimeImmutable">DateTimeImmutable</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   Retourne un nouvel objet <span class="classname"><a href="class.datetimeimmutable.php" class="classname">DateTimeImmutable</a></span> 
   représentant la date et l&#039;heure spécifiées par la chaîne 
   <code class="parameter">datetime</code>, qui a été formatée au 
   <code class="parameter">format</code> donné.
  </p>
 </div>


 <div class="refsect1 parameters" id="datetimeimmutable.createfromformat.parameters">
  <h3 class="title">Liste de paramètres</h3>
  <dl>
   
    <dt><code class="parameter">format</code></dt>
    <dd>
     <p class="para">
      Le format dans lequel <span class="type"><a href="language.types.string.php" class="type string">string</a></span> doit être transmise. Voir les 
      options de formatage ci-dessous. Dans la plupart des cas, les mêmes lettres 
      que pour la <span class="function"><a href="function.date.php" class="function">date()</a></span> peuvent être utilisées.
     </p>
     <p class="para">
      Tous les champs sont initialisés avec la date/heure actuelle. Dans la 
      plupart des cas, l&#039;on voudra les remettre à &quot;zéro&quot; (l&#039;époque Unix, 
      <code class="literal">1970-01-01 00:00:00 UTC</code>). Il est possible de faire cela 
      en incluant le caractère <code class="literal">!</code> comme premier caractère dans 
      <code class="parameter">format</code>, ou <code class="literal">|</code> comme dernier. 
      Consulter la documentation de chaque caractère ci-dessous pour
      plus d&#039;informations.
     </p>
     <p class="para">
      Le format est analysé de gauche à droite, ce qui signifie que dans 
      certaines situations, l&#039;ordre dans lequel les caractères de format 
      sont présents affecte le résultat. Dans le cas de <code class="literal">z</code> 
      (le jour de l&#039;année), il est nécessaire qu&#039;une année ait déjà été analysée, 
      par exemple via les caractères <code class="literal">Y</code> ou <code class="literal">y</code>.
     </p>
     <p class="para">
      Les lettres utilisées pour l&#039;analyse des nombres autorisent une large plage 
      de valeurs, en dehors de ce que serait la plage logique. Par exemple, 
      le <code class="literal">d</code> (jour du mois) accepte des valeurs comprises entre 
      <code class="literal">00</code> et <code class="literal">99</code>. La seule contrainte est sur 
      le nombre de chiffres. Le mécanisme de débordement de l&#039;analyseur date/heure 
      est utilisé lorsque des valeurs hors plage sont données. Les exemples 
      ci-dessous illustrent certains de ces comportements.
     </p>
     <p class="para">
      Cela signifie également que les données analysées pour une lettre de format 
      sont gourmandes et liront jusqu&#039;au nombre de chiffres que son format autorise. 
      Cela peut également signifier qu&#039;il n&#039;y a plus assez de caractères dans la chaîne 
      <code class="parameter">datetime</code> pour les caractères de format suivants. Un exemple 
      plus bas sur cette page illustre également ce problème.
     </p>
     <p class="para">
      <table class="doctable table">
       <caption><strong>Les caractères suivants sont reconnus pour le paramètre
       <code class="parameter">format</code></strong></caption>
       
        <thead>
         <tr>
          <th>Caractère de <code class="parameter">format</code></th>
          <th>Description</th>
          <th>Exemple de valeurs analysées</th>
         </tr>

        </thead>

        <tbody class="tbody">
         <tr>
          <td style="text-align: center;"><em>Jour</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">d</code> et <code class="literal">j</code></td>
          <td>Jour du mois, sur 2 chiffres, avec ou sans le zéro initial</td>
          <td>
           <code class="literal">01</code> à <code class="literal">31</code> ou
           <code class="literal">1</code> à <code class="literal">31</code> (les nombres à 2 
           chiffres supérieurs au nombre de jours du mois sont acceptés, 
           auquel cas ils feront déborder le mois. Par exemple utiliser 
           33 avec janvier, signifiera le 2 février)
          </td>
         </tr>

         <tr>
          <td><code class="literal">D</code> et <code class="literal">l</code></td>
          <td>Une représentation textuelle du jour</td>
          <td>
           De <code class="literal">Mon</code> jusqu&#039;à <code class="literal">Sun</code> ou
           de <code class="literal">Sunday</code> jusqu&#039;à <code class="literal">Saturday</code>
           Si le nom de jour donné est différent alors le nom de jour 
           appartenant à une date analysée (ou par défaut) est différent, 
           alors un débordement se produit vers la date 
           <em>suivante</em> avec le nom de jour donné. 
           Voir les exemples ci-dessous pour une explication.
          </td>
         </tr>

         <tr>
          <td><code class="literal">S</code></td>
          <td>Préfixe anglais du jour du mois, sur 2 caractères.
           Il sera ignoré lors de l&#039;analyse.</td>
          <td>
           <code class="literal">st</code>, <code class="literal">nd</code>, <code class="literal">rd</code> ou
           <code class="literal">th</code>.
          </td>
         </tr>

         <tr>
          <td><code class="literal">z</code></td>
          <td>
           Le jour de l&#039;année (en commençant à 0);
           doit être précédé par <code class="literal">Y</code> ou <code class="literal">y</code>.
          </td>
          <td>
           <code class="literal">0</code> à <code class="literal">365</code>
           (les nombres à 3 chiffres supérieurs aux nombres d&#039;une année sont 
           acceptés, auquel cas ils feront déborder l&#039;année. Par exemple, 
           utiliser 366 avec 2022, signifie le 2 janvier 2023)
          </td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Mois</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">F</code> et <code class="literal">M</code></td>
          <td>Une représentation textuelle du mois, comme January ou Sept</td>
          <td>
           De <code class="literal">January</code> à <code class="literal">December</code> ou
           de <code class="literal">Jan</code> à <code class="literal">Dec</code>
          </td>
         </tr>

         <tr>
          <td><code class="literal">m</code> et <code class="literal">n</code></td>
          <td>Une représentation numérique du mois, avec ou sans zéro initial</td>
          <td>
           De <code class="literal">01</code> à <code class="literal">12</code> ou
           de <code class="literal">1</code> à <code class="literal">12</code>
           (les nombres à 2 chiffres supérieurs à 12 sont acceptés, auquel cas ils 
           feront déborder l&#039;année. Par exemple, utiliser 13 signifie janvier de 
           l&#039;année suivante)
          </td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Année</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">X</code> et <code class="literal">x</code></td>
          <td>
           Une représentation numérique complète d&#039;une année, 
           <em>jusqu&#039;à</em> 19 chiffres, éventuellement préfixée par 
           <code class="literal">+</code> ou <code class="literal">-</code>
          </td>
          <td>Exemples : <code class="literal">1999</code> ou <code class="literal">2003</code></td>
         </tr>

         <tr>
          <td><code class="literal">Y</code></td>
          <td>Une représentation complète de l&#039;année, <em>jusqu&#039;à</em> 4 chiffres</td>
          <td>Exemples: <code class="literal">25</code> (comme <code class="literal">0025</code>),
           <code class="literal">787</code>, <code class="literal">1999</code>, <code class="literal">2003</code></td>
         </tr>

         <tr>
          <td><code class="literal">y</code></td>
          <td>Une représentation partielle de l&#039;année, sur 2 chiffres
           (qui doit être dans l&#039;intervalle 1970-2069, inclus)</td>
          <td>
           Exemples :
           <code class="literal">99</code> ou <code class="literal">03</code>
           (seront interprétés comme l&#039;année <code class="literal">1999</code> et l&#039;année
           <code class="literal">2003</code>, respectivement)
          </td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Heure</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">a</code> et <code class="literal">A</code></td>
          <td>Ante meridiem et Post meridiem</td>
          <td><code class="literal">am</code> ou <code class="literal">pm</code></td>
         </tr>

         <tr>
          <td><code class="literal">g</code> et <code class="literal">h</code></td>
          <td>L&#039;heure au format 12-heures, avec ou sans zéro initial</td>
          <td>
           De <code class="literal">1</code> à <code class="literal">12</code> ou
           de <code class="literal">01</code> à <code class="literal">12</code>
           (les nombres à 2 chiffres supérieurs à 12 sont acceptés, 
           auquel cas ils feront déborder le jour. Par exemple 
           utiliser 14 signifie 02 dans la prochaine période AM/PM)
          </td>
         </tr>

         <tr>
          <td><code class="literal">G</code> et <code class="literal">H</code></td>
          <td>L&#039;heure au format 24-heures, avec ou sans zéro initial</td>
          <td>
           De <code class="literal">0</code> à <code class="literal">23</code> ou
           de <code class="literal">00</code> à <code class="literal">23</code>
           (les nombres à 2 chiffres supérieurs à 24 sont acceptés, 
           auquel cas ils feront déborder la journée. Par exemple 
           utiliser 26 signifie 02:00 le lendemain)
          </td>
         </tr>

         <tr>
          <td><code class="literal">i</code></td>
          <td>Les minutes, avec un zéro initial</td>
          <td>
           De <code class="literal">00</code> à <code class="literal">59</code>
           (les nombres à 2 chiffres supérieurs à 59 sont acceptés, 
           auquel cas ils feront déborder l&#039;heure. Par exemple 
           utiliser 66 signifie :06 l&#039;heure suivante)
          </td>
         </tr>

         <tr>
          <td><code class="literal">s</code></td>
          <td>Les secondes, avec un zéro initial</td>
          <td>
           De <code class="literal">00</code> à <code class="literal">59</code>
           (les nombres à 2 chiffres supérieurs à 59 sont acceptés, 
           auquel cas ils feront déborder la minute. Par exemple 
           utiliser 90 signifie :30 la minute suivante)
          </td>
         </tr>

         <tr>
          <td><code class="literal">v</code></td>
          <td>Les millisecondes (jusqu&#039;à 3 chiffres)</td>
          <td>
           Exemple: <code class="literal">12</code> (<code class="literal">0.12</code>
           secondes), <code class="literal">345</code> (<code class="literal">0.345</code>
           secondes)
          </td>
         </tr>

         <tr>
          <td><code class="literal">u</code></td>
          <td>Les microsecondes (jusqu&#039;à 6 chiffres)</td>
          <td>
           Exemple : <code class="literal">45</code> (<code class="literal">0.45</code>
           secondes), <code class="literal">654321</code> (<code class="literal">
           0.654321</code> secondes)
          </td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Fuseau horaire</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td>
           <code class="literal">e</code>, <code class="literal">O</code>, <code class="literal">p</code>,
           <code class="literal">P</code> et <code class="literal">T</code>
          </td>
          <td>L&#039;identifiant du fuseau horaire, ou la différence en heures avec UTC,
           ou la différence avec UTC avec deux points (:) entre les heures et les minutes,
           ou l&#039;abréviation du fuseau horaire</td>
          <td>Exemples : <code class="literal">UTC</code>, <code class="literal">GMT</code>,
           <code class="literal">Atlantic/Azores</code> ou
           <code class="literal">+0200</code> ou <code class="literal">+02:00</code> ou
           <code class="literal">EST</code>, <code class="literal">MDT</code>
          </td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Date/heure complète</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">U</code></td>
          <td>Le nombre de secondes depuis l&#039;époque Unix (1er janvier 1970 00:00:00 GMT)</td>
          <td>Exemple : <code class="literal">1292177455</code></td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Espace et séparateurs</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal"> </code> (espace)</td>
          <td>Zéro ou plusieurs espaces, tabulations, caractères NBSP (U+A0), ou NNBSP (U+202F)</td>
          <td>Exemple: <code class="literal">&quot;\t&quot;</code>, <code class="literal">&quot;  &quot;</code></td>
         </tr>

         <tr>
          <td><code class="literal">#</code></td>
          <td>
           Un des symboles de séparation suivants : <code class="literal">;</code>,
           <code class="literal">:</code>, <code class="literal">/</code>, <code class="literal">.</code>,
           <code class="literal">,</code>, <code class="literal">-</code>, <code class="literal">(</code> ou
           <code class="literal">)</code>
          </td>
          <td>Exemple : <code class="literal">/</code></td>
         </tr>

         <tr>
          <td>
           <code class="literal">;</code>,
           <code class="literal">:</code>, <code class="literal">/</code>, <code class="literal">.</code>,
           <code class="literal">,</code>, <code class="literal">-</code>, <code class="literal">(</code> ou
           <code class="literal">)</code>
          </td>
          <td>Le caractère spécifié.</td>
          <td>Exemple : <code class="literal">-</code></td>
         </tr>

         <tr>
          <td><code class="literal">?</code></td>
          <td>Un octet aléatoire</td>
          <td>
           Exemple : <code class="literal">^</code> (Il est à noter que pour les 
           caractères UTF-8, l&#039;on pourrait avoir besoin de plus d&#039;un
           <code class="literal">?</code>. Dans ce cas, utiliser <code class="literal">*</code> 
           est probablement ce que l&#039;on veut à la place)
          </td>
         </tr>

         <tr>
          <td><code class="literal">*</code></td>
          <td>Octets aléatoires jusqu&#039;au prochain séparateur ou chiffre</td>
          <td>Exemple : <code class="literal">*</code> dans <code class="literal">Y-*-d</code> avec la chaîne
          <code class="literal">2009-aWord-08</code> trouvera la chaîne
          <code class="literal">aWord</code></td>
         </tr>

         <tr>
          <td><code class="literal">!</code></td>
          <td>
           Réinitialise tous les champs (année, mois, jour, heure, minute,
           seconde ainsi que les informations quant au fuseau horaire) à
           des valeurs similaires à zéro (<code class="literal">0</code> pour heure,
           minute, seconde et fraction, <code class="literal">1</code> pour mois et jour,
           <code class="literal">1970</code> pour l&#039;année et le fuseau horaire par défaut)
          </td>
          <td>Sans le caractère <code class="literal">!,</code> tous les champs seront
          définis à la date et heure courante.</td>
         </tr>

         <tr>
          <td><code class="literal">|</code></td>
          <td>Réinitialise tous les champs (année, mois, jour, heure, minute,
           seconde ainsi que les informations quant au fuseau horaire) à
           valeurs similaires à zéro s&#039;ils n&#039;ont pas encore été analysés</td>
          <td><code class="literal">Y-m-d|</code> définira l&#039;année, le mois et le jour
           avec les informations trouvées dans la chaîne analysée, mais aussi
           l&#039;heure, les minutes et les secondes à 0.</td>
         </tr>

         <tr>
          <td><code class="literal">+</code></td>
          <td>Si le spécifieur de format est présent, les données restantes
           de la chaîne ne causeront pas une erreur, mais une alerte</td>
          <td>Utiliser la méthode <span class="methodname"><a href="datetime.getlasterrors.php" class="methodname">DateTime::getLastErrors()</a></span>
           pour identifier la présence de données restantes.</td>
         </tr>

        </tbody>
       
      </table>

     </p>
     <p class="para">
      Les caractères non reconnus dans la chaîne de format entraîneront 
      l&#039;échec de l&#039;analyse et un message d&#039;erreur est ajouté à la structure 
      renvoyée. Il est possible d&#039;interroger les messages d&#039;erreur avec 
      <span class="methodname"><a href="datetimeimmutable.getlasterrors.php" class="methodname">DateTimeImmutable::getLastErrors()</a></span>.
     </p>
     <p class="para">
      Pour inclure un caractère littéral dans <code class="parameter">format</code>,
      il faut l&#039;échapper avec un antislash (<code class="literal">\</code>).
     </p>
     <p class="para">
      Si <code class="parameter">format</code> n&#039;est pas composé du caractère
      <code class="literal">!</code> alors les valeurs de temps générées qui sont absentes de
      <code class="parameter">format</code> prendront comme valeur le temps système.
     </p>
     <p class="para">
      Si <code class="parameter">format</code> contient le caractère
      <code class="literal">!</code>, alors les valeurs de temps générées qui sont absentes de
      <code class="parameter">format</code> ainsi que les valeurs situées à gauche de
      <code class="literal">!</code> prendront des valeurs mesurées depuis l&#039;époque Unix.
     </p>
     <p class="para">
      Si un caractère de temps est analysé, alors tous les autres champs liés au
      temps sont mis à &quot;0&quot;, sauf s&#039;ils sont également analysés.
     </p>
     <p class="para">
      Le début de l&#039;époque Unix est le 01/01/1970 à 00:00:00 UTC.
     </p>
    </dd>
   
   
    <dt><code class="parameter">datetime</code></dt>
    <dd>
     <p class="para">
      Chaîne représentant le moment.
     </p>
    </dd>
   
   
    <dt><code class="parameter">timezone</code></dt>
    <dd>
     <p class="para">
      Un objet <span class="classname"><a href="class.datetimezone.php" class="classname">DateTimeZone</a></span> représentant
      le fuseau horaire désiré.
     </p>
     <p class="para">
      Si <code class="parameter">timezone</code> est omis ou <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> et
      <code class="parameter">datetime</code> ne contient pas de fuseau,
      le fuseau courant sera utilisé.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: 
      <p class="para">
       Le paramètre <code class="parameter">timezone</code> et le fuseau
       courant sont ignorés lorsque le paramètre
       <code class="parameter">datetime</code> contient un timestamp
       (p. ex. <code class="literal">946684800</code>) ou précise un fuseau
       (p. ex. <code class="literal">2010-01-28T15:00:00+02:00</code>).
      </p>
     </p></blockquote>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-datetimeimmutable.createfromformat-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="para">
   Retourne un nouvel objet <span class="classname"><a href="class.datetimeimmutable.php" class="classname">DateTimeImmutable</a></span> ou <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si une erreur survient.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-datetimeimmutable.createfromformat-errors">
  <h3 class="title">Erreurs / Exceptions</h3>
  <p class="para">
   Cette méthode lance une <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> lorsque le
   <code class="parameter">datetime</code> contient des octets NULL.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-datetimeimmutable.createfromformat-changelog">
  <h3 class="title">Historique</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Version</th>
       <th>Description</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>8.2.9</td>
       <td>
        Le spécificateur <code class="literal"> </code> (espace) prend désormais également
        en charge les caractères NBSP (U+A0) et NNBSP (U+202F).
       </td>
      </tr>

      <tr>
       <td>8.2.0</td>
       <td>
        Les spécificateurs <code class="literal">X</code> et <code class="literal">x</code>
        <code class="parameter">format</code> ont été ajoutés.
       </td>
      </tr>

      <tr>
       <td>8.0.21, 8.1.8, 8.2.0</td>
       <td>
         Lance désormais une <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> lorsque des octets NULL
         sont passés dans <code class="parameter">datetime</code>, ce qui était auparavant ignoré
         silencieusement.
       </td>
      </tr>

      <tr>
       <td>7.3.0</td>
       <td>
        Le spécificateur de <code class="parameter">format</code> <code class="literal">v</code> a été ajouté.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-datetimeimmutable.createfromformat-examples">
  <h3 class="title">Exemples</h3>
  <div class="example" id="example-1">
   <p><strong>Exemple #1 Exemple avec <span class="function"><strong>DateTimeImmutable::createFromFormat()</strong></span></strong></p>
   <div class="example-contents"><p>Style orienté objet</p></div>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$date </span><span style="color: #007700">= </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">createFromFormat</span><span style="color: #007700">(</span><span style="color: #DD0000">'j-M-Y'</span><span style="color: #007700">, </span><span style="color: #DD0000">'15-Feb-2009'</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$date</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">'Y-m-d'</span><span style="color: #007700">);</span></span></code></div>
   </div>

  </div>

  <div class="example" id="example-2">
   <p><strong>Exemple #2 Utilisation des constantes de format prédéfinies avec <span class="function"><strong>DateTimeImmutable::createFromFormat()</strong></span></strong></p>
   <div class="example-contents"><p>Style orienté objet</p></div>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$date </span><span style="color: #007700">= </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">createFromFormat</span><span style="color: #007700">(<br />    </span><span style="color: #0000BB">DateTimeInterface</span><span style="color: #007700">::</span><span style="color: #0000BB">ISO8601</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">'2004-02-12T15:19:21+00:00'<br /></span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$date</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">'c e'</span><span style="color: #007700">) . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$date </span><span style="color: #007700">= </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">createFromFormat</span><span style="color: #007700">(<br />    </span><span style="color: #0000BB">DateTimeInterface</span><span style="color: #007700">::</span><span style="color: #0000BB">RFC3339_EXTENDED</span><span style="color: #007700">,<br />    </span><span style="color: #DD0000">'2013-10-14T09:00:00.000+02:00'<br /></span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$date</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">'c e'</span><span style="color: #007700">) . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;</span></span></code></div>
   </div>

   <div class="example-contents"><p>
    Les <a href="class.datetimeinterface.php#datetimeinterface.constants.types" class="link">constantes de formatage</a>
    telles qu&#039;elles sont utilisées dans cet exemple consistent en
    une chaîne de caractères pour <a href="datetime.format.php" class="link">formater</a> un
    objet <span class="classname"><a href="class.datetimeimmutable.php" class="classname">DateTimeImmutable</a></span>. Dans la plupart des cas, ces
    lettres correspondent aux mêmes éléments d&#039;information sur la date et l&#039;heure
    que ceux définis dans la section <a href="" class="link">paramètres</a>
    ci-dessus, mais elles ont tendance à être plus indulgentes.
   </p></div>
  </div>

  <div class="example" id="example-3">
   <p><strong>Exemple #3 Les subtilités de <span class="function"><strong>DateTimeImmutable::createFromFormat()</strong></span></strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">'Date courante: ' </span><span style="color: #007700">. </span><span style="color: #0000BB">date</span><span style="color: #007700">(</span><span style="color: #DD0000">'Y-m-d H:i:s'</span><span style="color: #007700">) . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$format </span><span style="color: #007700">= </span><span style="color: #DD0000">'Y-m-d'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$date </span><span style="color: #007700">= </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">createFromFormat</span><span style="color: #007700">(</span><span style="color: #0000BB">$format</span><span style="color: #007700">, </span><span style="color: #DD0000">'2009-02-15'</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"Format: </span><span style="color: #0000BB">$format</span><span style="color: #DD0000">; " </span><span style="color: #007700">. </span><span style="color: #0000BB">$date</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">'Y-m-d H:i:s'</span><span style="color: #007700">) . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$format </span><span style="color: #007700">= </span><span style="color: #DD0000">'Y-m-d H:i:s'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$date </span><span style="color: #007700">= </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">createFromFormat</span><span style="color: #007700">(</span><span style="color: #0000BB">$format</span><span style="color: #007700">, </span><span style="color: #DD0000">'2009-02-15 15:16:17'</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"Format: </span><span style="color: #0000BB">$format</span><span style="color: #DD0000">; " </span><span style="color: #007700">. </span><span style="color: #0000BB">$date</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">'Y-m-d H:i:s'</span><span style="color: #007700">) . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$format </span><span style="color: #007700">= </span><span style="color: #DD0000">'Y-m-!d H:i:s'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$date </span><span style="color: #007700">= </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">createFromFormat</span><span style="color: #007700">(</span><span style="color: #0000BB">$format</span><span style="color: #007700">, </span><span style="color: #DD0000">'2009-02-15 15:16:17'</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"Format: </span><span style="color: #0000BB">$format</span><span style="color: #DD0000">; " </span><span style="color: #007700">. </span><span style="color: #0000BB">$date</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">'Y-m-d H:i:s'</span><span style="color: #007700">) . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$format </span><span style="color: #007700">= </span><span style="color: #DD0000">'!d'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$date </span><span style="color: #007700">= </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">createFromFormat</span><span style="color: #007700">(</span><span style="color: #0000BB">$format</span><span style="color: #007700">, </span><span style="color: #DD0000">'15'</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"Format: </span><span style="color: #0000BB">$format</span><span style="color: #DD0000">; " </span><span style="color: #007700">. </span><span style="color: #0000BB">$date</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">'Y-m-d H:i:s'</span><span style="color: #007700">) . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$format </span><span style="color: #007700">= </span><span style="color: #DD0000">'i'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$date </span><span style="color: #007700">= </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">createFromFormat</span><span style="color: #007700">(</span><span style="color: #0000BB">$format</span><span style="color: #007700">, </span><span style="color: #DD0000">'15'</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"Format: </span><span style="color: #0000BB">$format</span><span style="color: #DD0000">; " </span><span style="color: #007700">. </span><span style="color: #0000BB">$date</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">'Y-m-d H:i:s'</span><span style="color: #007700">) . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;</span></span></code></div>
   </div>

   <div class="example-contents"><p>Résultat de l&#039;exemple ci-dessus est similaire à :</p></div>
   <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">Date courante: 2022-06-02 15:50:46
Format: Y-m-d; 2009-02-15 15:50:46
Format: Y-m-d H:i:s; 2009-02-15 15:16:17
Format: Y-m-!d H:i:s; 1970-01-15 15:16:17
Format: !d; 1970-01-15 00:00:00
Format: i; 2022-06-02 00:15:00</pre>
</div>
   </div>
  </div>

  <div class="example" id="example-4">
   <p><strong>Exemple #4 Texte de Format avec des caractères littéraux</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">createFromFormat</span><span style="color: #007700">(</span><span style="color: #DD0000">'H\h i\m s\s'</span><span style="color: #007700">,</span><span style="color: #DD0000">'23h 15m 03s'</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">'H:i:s'</span><span style="color: #007700">);</span></span></code></div>
   </div>

   <div class="example-contents"><p>Résultat de l&#039;exemple ci-dessus est similaire à :</p></div>
   <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">23:15:03</pre>
</div>
   </div>
  </div>

  <div class="example" id="example-5">
   <p><strong>Exemple #5 Comportement de débordement</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">echo </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">createFromFormat</span><span style="color: #007700">(</span><span style="color: #DD0000">'Y-m-d H:i:s'</span><span style="color: #007700">, </span><span style="color: #DD0000">'2021-17-35 16:60:97'</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">RFC2822</span><span style="color: #007700">);</span></span></code></div>
   </div>

   <div class="example-contents"><p>Résultat de l&#039;exemple ci-dessus est similaire à :</p></div>
   <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">Sat, 04 Jun 2022 17:01:37 +0000</pre>
</div>
   </div>
   <div class="example-contents"><p>
    Bien que le résultat semble étrange, il est correct, 
    car les débordements suivants se produisent:
   </p></div>
   <ol type="1">
    <li class="listitem">
     <span class="simpara">
      <code class="literal">97</code> secondes débordent sur <code class="literal">1</code> minute, 
      ce qui laisse <code class="literal">37</code> secondes.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <code class="literal">61</code> minutes débordent sur <code class="literal">1</code> heure,
      ce qui laisse <code class="literal">1</code> minute.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <code class="literal">35</code> jours débordent sur <code class="literal">1</code> mois, 
      ce qui laisse <code class="literal">4</code> jours. Le nombre de jours restants 
      dépend du mois, car tous les mois n&#039;ont pas le même nombre de jours.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <code class="literal">18</code> mois débordent sur <code class="literal">1</code> an,
      ce qui laisse <code class="literal">6</code> mois.
     </span>
    </li>
   </ol>
  </div>

  <div class="example" id="example-6">
   <p><strong>Exemple #6 Comportement pour le nom de jour débordant</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$d </span><span style="color: #007700">= </span><span style="color: #0000BB">DateTime</span><span style="color: #007700">::</span><span style="color: #0000BB">createFromFormat</span><span style="color: #007700">(</span><span style="color: #0000BB">DateTimeInterface</span><span style="color: #007700">::</span><span style="color: #0000BB">RFC1123</span><span style="color: #007700">, </span><span style="color: #DD0000">'Mon, 3 Aug 2020 25:00:00 +0000'</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$d</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #0000BB">DateTime</span><span style="color: #007700">::</span><span style="color: #0000BB">RFC1123</span><span style="color: #007700">), </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;</span></span></code></div>
   </div>

   <div class="example-contents"><p>Résultat de l&#039;exemple ci-dessus est similaire à :</p></div>
   <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">Mon, 10 Aug 2020 01:00:00 +0000</pre>
</div>
   </div>
   <div class="example-contents"><p>
    Bien que le résultat semble étrange, il est correct, 
    car les débordements suivants se produisent:
   </p></div>
   <ol type="1">
    <li class="listitem">
     <span class="simpara">
      <code class="literal">3 Aug 2020 25:00:00</code> débordent sur <code class="literal">(Tue) 4 Aug
      2020 01:00</code>.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <code class="literal">Mon</code> est appliqué, ce qui avance la date au
      <code class="literal">Mon, 10 Aug 2020 01:00:00</code>. L&#039;explication des 
      mots-clés relatifs tels que <code class="literal">Mon</code> est expliquée 
      dans la section sur les <a href="datetime.formats.php#datetime.formats.relative" class="link">
      formats relatifs</a>.
     </span>
    </li>
   </ol>
  </div>

  <p class="para">
   Afin de détecter les dépassements de dates, il est possible d&#039;utiliser 
   <span class="methodname"><a href="datetimeimmutable.getlasterrors.php" class="methodname">DateTimeImmutable::getLastErrors()</a></span>, qui 
   inclura un avertissement en cas de dépassement.
  </p>
  <div class="example" id="example-7">
   <p><strong>Exemple #7 Détecter les dates dépassées</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$d </span><span style="color: #007700">= </span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">createFromFormat</span><span style="color: #007700">(</span><span style="color: #DD0000">'Y-m-d H:i:s'</span><span style="color: #007700">, </span><span style="color: #DD0000">'2021-17-35 16:60:97'</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$d</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">RFC2822</span><span style="color: #007700">), </span><span style="color: #DD0000">"\n\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">DateTimeImmutable</span><span style="color: #007700">::</span><span style="color: #0000BB">getLastErrors</span><span style="color: #007700">());</span></span></code></div>
   </div>

   <div class="example-contents"><p>Résultat de l&#039;exemple ci-dessus est similaire à :</p></div>
   <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">Sat, 04 Jun 2022 17:01:37 +0000

array(4) {
  &#039;warning_count&#039; =&gt;
  int(2)
  &#039;warnings&#039; =&gt;
  array(1) {
    [19] =&gt;
    string(27) &quot;The parsed date was invalid&quot;
  }
  &#039;error_count&#039; =&gt;
  int(0)
  &#039;errors&#039; =&gt;
  array(0) {
  }
}</pre>
</div>
   </div>
  </div>

  <div class="example" id="example-8">
   <p><strong>Exemple #8 Comportement d&#039;analyse gourmand</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">date_parse_from_format</span><span style="color: #007700">(</span><span style="color: #DD0000">'Gis'</span><span style="color: #007700">, </span><span style="color: #DD0000">'60101'</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>Résultat de l&#039;exemple ci-dessus est similaire à :</p></div>
   <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">Array
(
    [year] =&gt;
    [month] =&gt;
    [day] =&gt;
    [hour] =&gt; 60
    [minute] =&gt; 10
    [second] =&gt; 0
    [fraction] =&gt; 0
    [warning_count] =&gt; 1
    [warnings] =&gt; Array
        (
            [5] =&gt; The parsed time was invalid
        )

    [error_count] =&gt; 1
    [errors] =&gt; Array
        (
            [4] =&gt; A two digit second could not be found
        )

    [is_localtime] =&gt;
)</pre>
</div>
   </div>
   <div class="example-contents"><p>
    Le format <code class="literal">G</code> consiste à analyser les heures d&#039;horloge 
    sur 24 heures, avec ou sans zéro de tête. Cela nécessite d&#039;analyser 1 ou 2 
    chiffres. Parce qu&#039;il y a deux chiffres suivants, il lit avidement cela 
    comme <code class="literal">60</code>.
   </p></div>
   <div class="example-contents"><p>
    Les caractères de format <code class="literal">i</code> et <code class="literal">s</code> suivants 
    nécessitent tous deux deux chiffres. Cela signifie que <code class="literal">10</code> 
    est passé comme minute (<code class="literal">i</code>), et qu&#039;il n&#039;y a alors plus assez 
    de chiffres à analyser comme seconde (<code class="literal">s</code>).
   </p></div>
   <div class="example-contents"><p>
    Le tableau <code class="literal">errors</code> indique ce problème.
   </p></div>
   <div class="example-contents"><p>
    De plus, une heure de <code class="literal">60</code> est en dehors de la plage 
    <code class="literal">0</code>-<code class="literal">24</code>, ce qui fait que le tableau 
    <code class="literal">warnings</code> inclut un avertissement indiquant que l&#039;heure n&#039;est pas
    valide.
   </p></div>
  </div>

 </div>


 <div class="refsect1 seealso" id="refsect1-datetimeimmutable.createfromformat-seealso">
  <h3 class="title">Voir aussi</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="datetimeimmutable.construct.php" class="function" rel="rdfs-seeAlso">DateTimeImmutable::__construct()</a> - Retourne un nouvel objet DateTimeImmutable</span></li>
   <li><span class="function"><a href="datetimeimmutable.getlasterrors.php" class="function" rel="rdfs-seeAlso">DateTimeImmutable::getLastErrors()</a> - Retourne les alertes et erreurs</span></li>
   <li><span class="function"><a href="function.checkdate.php" class="function" rel="rdfs-seeAlso">checkdate()</a> - Valide une date gr&eacute;gorienne</span></li>
   <li><span class="function"><a href="function.strptime.php" class="function" rel="rdfs-seeAlso">strptime()</a> - Analyse une date g&eacute;n&eacute;r&eacute;e par strftime</span></li>
  </ul>
 </div>


</div><?php manual_footer($setup); ?>