<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'datetimeimmutable.createfromformat.php',
    1 => 'DateTimeImmutable::createFromFormat',
    2 => 'Analiza un string de tiempo seg&uacute;n el formato especificado',
  ),
  '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' => 'es',
    '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">Analiza un string de tiempo según el formato especificado</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-datetimeimmutable.createfromformat-description">
  <h3 class="title">Descripción</h3>
  <p class="para">Estilo orientado a objetos</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">Estilo procedimental</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">
   Devuelve un nuevo objeto DateTimeImmutable representando la fecha y hora especificada por
   el string <code class="parameter">datetime</code>, que tiene el formato indicado por
   <code class="parameter">format</code>.
  </p>
 </div>


 <div class="refsect1 parameters" id="datetimeimmutable.createfromformat.parameters">
  <h3 class="title">Parámetros</h3>
  <dl>
   
    <dt><code class="parameter">format</code></dt>
    <dd>
     <p class="para">
      El formato en el cual se ha pasado el <span class="type"><a href="language.types.string.php" class="type string">string</a></span>. Consulta las
      opciones de formato a continuación. En la mayoría de los casos, pueden ser
      usadas las mismas letras que para la función <span class="function"><a href="function.date.php" class="function">date()</a></span>.
     </p>
     <p class="para">
      Todos los campos son inicializados con la fecha y hora actual. En el caso
      de que quieras restablecerlos a &quot;cero&quot; (Unix epoch, <code class="literal">01/01/1970
      00:00:00 UTC</code>). Puedes hacerlo incluyendo el carácter
      <code class="literal">!</code> al principio de <code class="parameter">format</code>,
      o <code class="literal">|</code> al final. Por favor, consulta la documentación
      de cada carácter a continuación para más información.
     </p>
     <p class="para">
      El formato es analizado de izquierda a derecha, lo que significa que en
      algunas situaciones el orden en el que los caracteres de formato están
      escritos afecta al resultado. En el caso de <code class="literal">z</code> (el
      día del año), es necesario que un año ya se haya analizado, por
      ejemplo mediante los caracteres <code class="literal">Y</code> o
      <code class="literal">y</code>.
     </p>
     <p class="para">
      Las letras de formato que se usan para analizar números permiten un
      amplio rango de valores, fuera de lo que sería el rango lógico. Por
      ejemplo, el <code class="literal">d</code> (día del mes) acepta valores en el
      rango de <code class="literal">00</code> a <code class="literal">99</code>. La única
      restricción es en la cantidad de dígitos. El mecanismo de desbordamiento
      del analizador de fecha/hora se usa cuando se dan valores fuera de rango.
      Los ejemplos a continuación muestran algo de este comportamiento.
     </p>
     <p class="para">
      Esto también significa que los datos analizados para una letra de formato
      son golosos, y leerán toda la cantidad de dígitos que su formato
      permite. Esto también puede significar que no hay suficientes
      caracteres en <code class="parameter">datetime</code> para las letras de
      formato sucesivas. Un ejemplo en esta página también ilustra este
      problema.
     </p>
     <p class="para">
      <table class="doctable table">
       <caption><strong>Los siguientes caracteres son reconocidos en la cadena
       del parámetro <code class="parameter">format</code></strong></caption>
       
        <thead>
         <tr>
          <th>Carácter <code class="parameter">format</code></th>
          <th>Descripción</th>
          <th>Ejemplo de valores analizables</th>
         </tr>

        </thead>

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

         <tr>
          <td><code class="literal">d</code> y <code class="literal">j</code></td>
          <td>Día del mes, 2 dígitos con o sin ceros iniciales</td>
          <td>
           <code class="literal">01</code> a <code class="literal">31</code> o
           <code class="literal">1</code> a <code class="literal">31</code>. (Se aceptan 2 dígitos
           numericos mayores que los días del mes, en cuyo caso harán
           que el mes se desborde. Por ejemplo usando 33 con enero,
           significará 2 de febrero)
          </td>
         </tr>

         <tr>
          <td><code class="literal">D</code> y <code class="literal">l</code></td>
          <td>Nombre del día de la semana como texto, en inglés</td>
          <td>
           <code class="literal">Mon</code> hasta <code class="literal">Sun</code> o
           <code class="literal">Sunday</code> hasta <code class="literal">Saturday</code>. Si
           el nombre del día indicado es diferente al nombre del día que
           pertenece la fecha analizada (o predeterminada) es diferente,
           entonces se produce un desbordamiento a la <em>siguiente</em>
           fecha con el nombre de indicado. Vea los ejemplos a continuación
           para obtener una explicación.
          </td>
         </tr>

         <tr>
          <td><code class="literal">S</code></td>
          <td>Sufijo ordinal en inglés para el día del mes, 2
           caracteres. Se ignora durante el procesamiento.
          </td>
          <td>
           <code class="literal">st</code>, <code class="literal">nd</code>, <code class="literal">rd</code> o
           <code class="literal">th</code>.
          </td>
         </tr>

         <tr>
          <td><code class="literal">z</code></td>
          <td>
           Día del año (comenzando en 0);
           debe estar precedido por <code class="literal">Y</code> o <code class="literal">y</code>.
          </td>
          <td>
           <code class="literal">0</code> hasta <code class="literal">365</code>. (son aceptados
           3 dígitos numéricos mayores que 365, en cuyo caso harán que
           el año se desborde. Por ejemplo usando 366 con 2022, significa
           2 de enero de 2023)
          </td>
         </tr>

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

         <tr>
          <td><code class="literal">F</code> y <code class="literal">M</code></td>
          <td>Nombre del mes, en inglés, como January o Sept</td>
          <td>
           <code class="literal">January</code> hasta <code class="literal">December</code> o
           <code class="literal">Jan</code> hasta <code class="literal">Dec</code>
          </td>
         </tr>

         <tr>
          <td><code class="literal">m</code> y <code class="literal">n</code></td>
          <td>Representación numerica del mes, 2 dígitos con o sin ceros iniciales</td>
          <td>
           <code class="literal">01</code> hasta <code class="literal">12</code> o
           <code class="literal">1</code> hasta <code class="literal">12</code>.
           (son aceptados 2 dígitos numéricos mayores que 12, en cuyo caso
           harán que el año se desborde. Por ejemplo usando 13 significa
           enero del siguiente año)
          </td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Año</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">X</code> y <code class="literal">x</code></td>
          <td>Una representación completa del año, <em>hasta</em> 19 dígitos,
           opcionalmente con el prefijo <code class="literal">+</code> o
           <code class="literal">-</code>
          </td>
          <td>Ejemplos: <code class="literal">0055</code>, <code class="literal">787</code>,
           <code class="literal">1999</code>, <code class="literal">-2003</code>,
           <code class="literal">+10191</code></td>
         </tr>

         <tr>
          <td><code class="literal">Y</code></td>
          <td>Una representación completa del año, <em>hasta</em> 4 dígitos</td>
          <td>Ejemplos: <code class="literal">25</code> (igual que <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>
           Una representación de dos dígitos de un año (que se asume que está
           en el rango 1970-2069, inclusive)
          </td>
          <td>
           Ejemplos:
           <code class="literal">99</code> o <code class="literal">03</code>
           (que se interpretarán como <code class="literal">1999</code> y
           <code class="literal">2003</code>, respectivamente)
          </td>
         </tr>

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

         <tr>
          <td><code class="literal">a</code> y <code class="literal">A</code></td>
          <td>Ante meridiem y post meridiem</td>
          <td><code class="literal">am</code> or <code class="literal">pm</code></td>
         </tr>

         <tr>
          <td><code class="literal">g</code> y <code class="literal">h</code></td>
          <td>Hora en formato 12 horas, 2 dígitos con o sin ceros iniciales</td>
          <td>
           <code class="literal">1</code> hasta <code class="literal">12</code> o
           <code class="literal">01</code> hasta <code class="literal">12</code> (son aceptados
           2 dígitos numéricos mayores que 12, en cuyo caso harán que
           el día se desborde. Por ejemplo usando <code class="literal">14</code> significa
           <code class="literal">02</code> en el siguiente periodo AM/PM)
          </td>
         </tr>

         <tr>
          <td><code class="literal">G</code> y <code class="literal">H</code></td>
          <td>Hora en formato 24 horas, 2 dígitos con o sin ceros iniciales</td>
          <td>
           <code class="literal">0</code> hasta <code class="literal">23</code> o
           <code class="literal">00</code> hasta <code class="literal">23</code> (son aceptados
           2 dígitos numéricos mayores que 24, en cuyo caso harán que
           el día se desborde. Por ejemplo usando <code class="literal">26</code> significa
           <code class="literal">02:00</code> en el siguiente día)
          </td>
         </tr>

         <tr>
          <td><code class="literal">i</code></td>
          <td>Minutos, con ceros iniciales</td>
          <td>
           <code class="literal">00</code> a <code class="literal">59</code>. (son aceptados
           2 dígitos numéricos mayores que 59, en cuyo caso harán que
           la hora se desborde. Por ejemplo usando <code class="literal">66</code> significa
           <code class="literal">06</code> en la siguiente hora)
          </td>
         </tr>

         <tr>
          <td><code class="literal">s</code></td>
          <td>Segundos, con ceros iniciales</td>
          <td>
           <code class="literal">00</code> hastah <code class="literal">59</code> (son aceptados
           2 dígitos numéricos mayores que 59, en cuyo caso harán que
           el minuto se desborde. Por ejemplo usando <code class="literal">90</code> significa
           <code class="literal">30</code> en el siguiente minuto)
          </td>
         </tr>

         <tr>
          <td><code class="literal">v</code></td>
          <td>Fracción en milisengundos (hasta 3 digitos)</td>
          <td>Ejemplos: <code class="literal">12</code> (<code class="literal">0.12</code>
          segundos), <code class="literal">345</code> (<code class="literal">0.345</code> segundos)</td>
         </tr>

         <tr>
          <td><code class="literal">u</code></td>
          <td>Fracción en microsengundos (hasta 6 dígitos)</td>
          <td>Ejemplos: <code class="literal">45</code> (<code class="literal">0.45</code>
          segundos), <code class="literal">654321</code> (<code class="literal">0.654321</code>
          segundos)</td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Zona horaria</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> y <code class="literal">T</code>
          </td>
          <td>
           Identificador de zona horaria, o diferencia a UTC en horas, o
           diferencia a UTC con dos puntos entre horas y minutos, o abreviatura
           de zona horaria
          </td>
          <td>Ejemplos: <code class="literal">UTC</code>, <code class="literal">GMT</code>,
           <code class="literal">Atlantic/Azores</code> o
           <code class="literal">+0200</code> o <code class="literal">+02:00</code> o
           <code class="literal">EST</code>, <code class="literal">MDT</code>
          </td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Fecha y hora completa</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal">U</code></td>
          <td>Segundos desde Unix Epoch (1 de enero de 1970 00:00:00 GMT)</td>
          <td>Ejemplo: <code class="literal">1292177455</code></td>
         </tr>

         <tr>
          <td style="text-align: center;"><em>Espacios en blanco y separadores</em></td>
          <td>---</td>
          <td>---</td>
         </tr>

         <tr>
          <td><code class="literal"> </code> (espacio)</td>
          <td>
           Cero o más espacios, tabuladores, NBSP (U+A0) o NNBSP (U+202F)
          </td>
          <td>Ejemplos: <code class="literal">&quot;\t&quot;</code> o <code class="literal">&quot;  &quot;</code></td>
         </tr>

         <tr>
          <td><code class="literal">#</code></td>
          <td>
           Uno de los siguientes símbolos de separación: <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> o
           <code class="literal">)</code>
          </td>
          <td>Ejemplo: <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> o
           <code class="literal">)</code>
          </td>
          <td>El carácter especificado</td>
          <td>Ejemplo: <code class="literal">-</code></td>
         </tr>

         <tr>
          <td><code class="literal">?</code></td>
          <td>Un byte aleatorio</td>
          <td>Ejemplo: <code class="literal">^</code> (Tenga en cuenta que los
          caracteres UTF-8 es posible que necesite más de uno <code class="literal">?</code>.
          En este caso, usar <code class="literal">*</code> es probablemente lo que
          desea en su lugar)</td>
         </tr>

         <tr>
          <td><code class="literal">*</code></td>
          <td>Bytes aleatorios hasta el siguiente separador o dígito</td>
          <td>Ejemplo: <code class="literal">*</code> en <code class="literal">Y-*-d</code> con
          la cadena  <code class="literal">2009-aWord-08</code> coincidirá con
          <code class="literal">aWord</code></td>
         </tr>

         <tr>
          <td><code class="literal">!</code></td>
          <td>
           Restablece todos los campos (año, mes, día, hora, minuto, segundo,
           fracción e información de zona horaria) a valores similares a cero
           (<code class="literal">0</code> para hora, minuto, segundo y fracción,
           <code class="literal">1</code> para mes y día, <code class="literal">1970</code> para
           año y la zona horaria predeterminada)
          </td>
          <td>Sin <code class="literal">!</code>, todos los campos se establecerán
          a la fecha y hora actual.</td>
         </tr>

         <tr>
          <td><code class="literal">|</code></td>
          <td>
           Restablece todos los campos (año, mes, día, hora, minuto, segundo,
           fracción e información de zona horaria) a valores similares a cero
           si no han sido analizados todavía.
          </td>
          <td>
           <code class="literal">Y-m-d|</code> establecerá el año, mes y día
           a la información encontrada en la cadena a analizar, y establecerá
           la hora, minuto y segundo a <code class="literal">0</code>.
          </td>
         </tr>

         <tr>
          <td><code class="literal">+</code></td>
          <td>
           Si este especificador de formato está presente, los datos
           adicionales en la cadena no causarán un error, sino una advertencia
           en su lugar
          </td>
          <td>
           Usa <span class="methodname"><a href="datetimeimmutable.getlasterrors.php" class="methodname">DateTimeImmutable::getLastErrors()</a></span> para
           averiguar si había datos adicionales.
          </td>
         </tr>

        </tbody>
       
      </table>

     </p>
     <p class="para">
      Los caracteres no reconocidos en el string de formato causarán que el
      análisis falle y un mensaje de error se añadirá a la estructura
      devuelta. Puedes consultar los mensajes de error con
      <span class="methodname"><a href="datetimeimmutable.getlasterrors.php" class="methodname">DateTimeImmutable::getLastErrors()</a></span>.
     </p>
     <p class="para">
      Para incluir caracteres literales en <code class="parameter">format</code>, debes
      escaparlos con una barra invertida (<code class="literal">\</code>).
     </p>
     <p class="para">
      Si <code class="parameter">format</code> no contiene el carácter
      <code class="literal">!</code>, entonces las partes de la fecha/hora que no están
      especificadas en <code class="parameter">format</code> se establecerán a la fecha
      actual del sistema.
     </p>
     <p class="para">
      Si <code class="parameter">format</code> contiene el carácter <code class="literal">!</code>,
      entonces las partes de la fecha/hora generadas que no están especificadas
      en <code class="parameter">format</code>, así como los valores a la izquierda del
      <code class="literal">!</code>, se establecerán a los valores correspondientes de
      Unix epoch.
     </p>
     <p class="para">
      Si cualquier carácter de tiempo es analizado, entonces todos los demás
      campos relacionados con el tiempo se establecerán a &quot;0&quot;, a menos que
      también se analicen.
     </p>
     <p class="para">
      Unix epoch es 01/01/1970 00:00:00 UTC.
     </p>
    </dd>
   
   
    <dt><code class="parameter">datetime</code></dt>
    <dd>
     <p class="para">
      String representando la fecha y hora.
     </p>
    </dd>
   
   
    <dt><code class="parameter">timezone</code></dt>
    <dd>
     <p class="para">
      Una instancia de <span class="classname"><a href="class.datetimezone.php" class="classname">DateTimeZone</a></span> representando la
      zona horaria deseada.
     </p>
     <p class="para">
      Si se omite <code class="parameter">timezone</code> o pasado <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> y
      <code class="parameter">datetime</code> no contiene zona horaria,
      se usará la zona horaria actual.
     </p>
     <blockquote class="note"><p><strong class="note">Nota</strong>: 
      <p class="para">
       El parámetro <code class="parameter">timezone</code> y la zona horaria actual
       son ignorados cuando el parámetro <code class="parameter">datetime</code> contiene
       un timestamp UNIX (por ejemplo, <code class="literal">946684800</code>) o especifica
       una zona horaria (por ejemplo, <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">Valores devueltos</h3>
  <p class="para">
   Devuelve una nueva instancia de DateTimeImmutable  o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si ocurre un error.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-datetimeimmutable.createfromformat-errors">
  <h3 class="title">Errores/Excepciones</h3>
  <p class="para">
   Este método lanza <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> cuando
   <code class="parameter">datetime</code> contiene bytes nulos.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-datetimeimmutable.createfromformat-changelog">
  <h3 class="title">Historial de cambios</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Versión</th>
       <th>Descripción</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>8.2.9</td>
       <td>
        El especificador <code class="literal"> </code> (espacio) ahora también
        soporta los caracteres NBSP (U+A0) y NNBSP (U+202F).
       </td>
      </tr>

      <tr>
       <td>8.2.0</td>
       <td>
        Se ha añadido los especificadores de <code class="parameter">format</code>
        <code class="literal">X</code> y <code class="literal">x</code>.
       </td>
      </tr>

      <tr>
       <td>8.0.21, 8.1.8, 8.2.0</td>
       <td>
        Ahora se lanza <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span> cuando
        se pasan bytes nulos a <code class="parameter">datetime</code>, lo que
        anteriormente se ignoraba silenciosamente.
       </td>
      </tr>

      <tr>
       <td>7.3.0</td>
       <td>
        Se ha añadido el especificador de <code class="parameter">format</code>
        <code class="literal">v</code>.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-datetimeimmutable.createfromformat-examples">
  <h3 class="title">Ejemplos</h3>
  <div class="example" id="example-1">
   <p><strong>Ejemplo #1 Ejemplo de <span class="function"><strong>DateTimeImmutable::createFromFormat()</strong></span></strong></p>
   <div class="example-contents"><p>Estilo orientado a objetos</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>Ejemplo #2 Usando constantes predefinidas con <span class="function"><strong>DateTimeImmutable::createFromFormat()</strong></span></strong></p>
   <div class="example-contents"><p>Estilo orientado a objetos</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>
    Las <a href="class.datetimeinterface.php#datetimeinterface.constants.types" class="link">constantes de formato</a>
    usadas en este ejemplo consisten en una cadena de caracteres para
    <a href="datetime.format.php" class="link">formatear</a> un objeto
    <span class="classname"><a href="class.datetimeimmutable.php" class="classname">DateTimeImmutable</a></span>. En la mayoría de los casos, estas
    letras coinciden con los mismos elementos de información de fecha/hora que
    los definidos en los <a href="" class="link">parámetros</a>
    de la sección anterior, pero tienden a ser más permisivos.
   </p></div>
  </div>

  <div class="example" id="example-3">
   <p><strong>Ejemplo #3 Complejidades 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">'Hora actual: ' </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">"Formato: </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">"Formato: </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">"Formato: </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">"Formato: </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">"Formato: </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>Resultado del ejemplo anterior es similar a:</p></div>
   <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">Hora actual: 2022-06-02 15:50:46
Formato: Y-m-d; 2009-02-15 15:50:46
Formato: Y-m-d H:i:s; 2009-02-15 15:16:17
Formato: Y-m-!d H:i:s; 1970-01-15 15:16:17
Formato: !d; 1970-01-15 00:00:00
Formato: i; 2022-06-02 00:15:00</pre>
</div>
   </div>
  </div>

  <div class="example" id="example-4">
   <p><strong>Ejemplo #4 Cadenas de formato con caracteres literales</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>Resultado del ejemplo anterior es similar a:</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>Ejemplo #5 Comportamiento de desbordamiento</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>Resultado del ejemplo anterior es similar a:</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>
    Aunque el resultado parece extraño, es correcto, ya que ocurren
    los siguientes desbordamientos:
   </p></div>
   <ol type="1">
    <li class="listitem">
     <span class="simpara">
      <code class="literal">97</code> segundos se desbordan a <code class="literal">1</code> minuto,
      dejando <code class="literal">37</code> segundos.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <code class="literal">61</code> minutos se desbordan a <code class="literal">1</code> hora,
      dejando <code class="literal">1</code> minuto.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <code class="literal">35</code> días se debordan a <code class="literal">1</code> mes,
      dejando <code class="literal">4</code> días. La cantidad de días que quedan
      depende del mes, ya que no todos los meses tienen la misma cantidad
      de días.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      <code class="literal">18</code> meses se desbordan a <code class="literal">1</code> año,
      dejando <code class="literal">6</code> meses.
     </span>
    </li>
   </ol>
  </div>

  <div class="example" id="example-6">
   <p><strong>Ejemplo #6 Comportamiento de desbordamiento de nombres de días de la semana</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>Resultado del ejemplo anterior es similar a:</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>
    Aunque el resultado parece extraño, es correcto, ya que ocurren
    los siguientes desbordamientos:
   </p></div>
   <ol type="1">
    <li class="listitem">
     <span class="simpara">
      <code class="literal">3 Aug 2020 25:00:00</code> se desborda a <code class="literal">(Tue) 4 Aug
      2020 01:00</code>.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Se aplica <code class="literal">Mon</code>, el cual avanza la fecha a
      <code class="literal">Mon, 10 Aug 2020 01:00:00</code>. La explicación de
      palabras clave relativas como <code class="literal">Mon</code> se explica en la
      sección de <a href="datetime.formats.php#datetime.formats.relative" class="link">formatos relativos</a>.
     </span>
    </li>
   </ol>
  </div>

  <p class="para">
   Para detectar desbordamientos en fechas, puedes usar
   <span class="methodname"><a href="datetimeimmutable.getlasterrors.php" class="methodname">DateTimeImmutable::getLastErrors()</a></span>, el cual
   incluirá una advertencia si ocurrió un desbordamiento.
  </p>
  <div class="example" id="example-7">
   <p><strong>Ejemplo #7 Detección de fechas desbordadas</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>Resultado del ejemplo anterior es similar a:</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>Ejemplo #8 Comportamiento de análisis goloso</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">));</span></span></code></div>
   </div>

   <div class="example-contents"><p>Resultado del ejemplo anterior es similar a:</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>
    El formato <code class="literal">G</code> es para analizar horas en formato de 24
    horas, con o sin cero inicial. Esto requiere analizar 1 o 2 dígitos. Debido
    a que hay dos dígitos siguientes, lo lee ávidamente como <code class="literal">60</code>.
   </p></div>
   <div class="example-contents"><p>
    Los siguientes caracteres de formato <code class="literal">i</code> y <code class="literal">s</code>
    requieren ambos dos dígitos. Esto significa que se pasa <code class="literal">10</code>
    como minutos (<code class="literal">i</code>), y que luego no quedan suficientes
    dígitos para analizar como segundos (<code class="literal">s</code>).
   </p></div>
   <div class="example-contents"><p>
    El array <code class="literal">errors</code> indica este problema.
   </p></div>
   <div class="example-contents"><p>
    Adicionalmente, una hora de <code class="literal">60</code> está fuera del rango
    <code class="literal">0</code>-<code class="literal">24</code>, lo que hace que el array
    <code class="literal">warnings</code> incluya una advertencia de que la hora es
    incorrecta.
   </p></div>
  </div>

 </div>


 <div class="refsect1 seealso" id="refsect1-datetimeimmutable.createfromformat-seealso">
  <h3 class="title">Ver también</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="datetimeimmutable.construct.php" class="function" rel="rdfs-seeAlso">DateTimeImmutable::__construct()</a> - Devuelve un nuevo objeto DateTimeImmutable</span></li>
   <li><span class="function"><a href="datetimeimmutable.getlasterrors.php" class="function" rel="rdfs-seeAlso">DateTimeImmutable::getLastErrors()</a> - Devuelve las advertencias y errores</span></li>
   <li><span class="function"><a href="function.checkdate.php" class="function" rel="rdfs-seeAlso">checkdate()</a> - Valida una fecha gregoriana</span></li>
   <li><span class="function"><a href="function.strptime.php" class="function" rel="rdfs-seeAlso">strptime()</a> - Analiza una fecha/hora generada con strftime</span></li>
  </ul>
 </div>


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