(PHP 5 >= 5.3.0)
DateTime::createFromFormat -- date_create_from_format — Devuelve un nuevo objeto DateTime formateado según el formato especificado
Estilo orientado a objetos
$format
, string $time
[, DateTimeZone $timezone
] )Estilo por procedimientos
Devuelve un nuevo objeto DateTime formateado según el formato especificado.
format
El formato en el que debería estar lo pasado en string. Véase las opciones de formateo más abajo. En la mayoría de los casos se pueden usar las mismas letras que para date().
Carácter format |
Descripción | Ejemplo de valores analizables |
---|---|---|
Día | --- | --- |
d y j | Día del mes, 2 dígitos con o sin ceros iniciales | 01 a 31 o 1 a 31 |
D y l | Una representación textual de un día | Mon hasta Sun o Sunday hasta Saturday |
S | Sufijo ordinal inglés para el día del mes, 2 caracteres. Se ignora mientras se procesa. | st, nd, rd o th. |
z | El día del año (comenzando por 0) | 0 hasta 365 |
Mes | --- | --- |
F y M | Una representación textual de un mes, como January o Sept | January hasta December o Jan hasta Dec |
m y n | Representación numérica de un mes, con o sin ceros iniciales | 01 hasta 12 o 1 hasta 12 |
Año | --- | --- |
Y | Una representación numérica completa de un año, 4 dígitos | Ejemplos: 1999 o 2003 |
y | Una representación de dos dígitos de un año | Ejemplos: 99 o 03 |
Hora | --- | --- |
a y A | Ante meridiem y Post meridiem | am o pm |
g y h | Formato de 12 horas de una hora con o sin ceros iniciales | 1 hasta 12 o 01 hasta 12 |
G y H | Formato de 24 horas de una hora con o sin ceros iniciales | 0 hasta 23 o 00 hasta 23 |
i | Minutos con ceros iniciales | 00 a 59 |
s | Segundos, con ceros iniciales | 00 hasta 59 |
u | Microsegundos (hasta seis dígitos) | Ejemplo: 45, 654321 |
Zona Horaria | --- | --- |
e, O, P y T | Identificador de zona horaria, o diferencia con UTC en horas, o diferencia con UTC con dos puntos entre horas y minutos, o abreviatura de la zona horaria | Ejemplos: UTC, GMT, Atlantic/Azores o +0200 o +02:00 o EST, MDT |
Fecha/Hora Completas | --- | --- |
U | Segundos desde la Época Unix (January 1 1970 00:00:00 GMT) | Ejemplo: 1292177455 |
Espacios en Blanco y Separadores | --- | --- |
(espacio) | Un espacio o una tabulación | Ejemplo: |
# | Uno de los siguientes símbolos de separación: ;, :, /, ., ,, -, ( o ) | Ejemplo: / |
;, :, /, ., ,, -, ( or ) | El carácter especificado. | Ejemplo: - |
? | Un byte aleatorio | Ejemplo: ^ (Sea consciente de que para los caracteres UTF-8 debería necesitar más de un ?. En este caso es probable que quiera usar * en su lugar) |
* | Bytes aleatorios hasta el siguiente separador o dígito | Ejemplo: * en Y-*-d con la cadena 2009-aWord-08 coincidirá con aWord |
! | Reinicia todos los campos (año, mes, día, hora, minuto, segundo, fracción e información de la zona horaria) a la Época Unix | Sin !, todos los campos serán establecidos a la fecha y hora actuales. |
| | Reinicia todos los campos (año, mes, día, hora, minuto, segundo, fracción e información de la zona horaria) a la Época Unix si no han sido ya analizados | Y-m-d| establecerá el año, mes y día a la información encontrada en la cadena a analizar, y establece la hora, minutos y segundos a 0. |
+ | Si este especificador de formato está presente, la información sobrante de la cadena no causará un error, pero sí una advertencia en su lugar | Use DateTime::getLastErrors() para averiguar si está presente información sobrante. |
Los caracteres no reconocidos en la cadena de formato causarán el fallo del análisis y se añadirá un mensaje de error a la esctructura devuelta. Puede consultar los mensajes de error con DateTime::getLastErrors().
Si format
no contiene el carácter
!, las partes del momento generado que no estén
especificadas en format
serán establecidas al momento actual
del sistema.
Si format
contiene el
carácter !, las partes del momento generadas
no proporcionadas en format
, así como
los valores más a la izquierda de !, serán
establecidos a los valores correspondientes de la época Unix.
La época Unix es 1970-01-01 00:00:00 UTC.
time
Una cadena que representa la hora.
timezone
Un objeto DateTimeZone que representa la zona horaria deseada.
Si se omite timezone
y
time
no contiene ninguna zona horaria,
se usará la zona horaria actual.
Nota:
El parámetro
timezone
y la zona horaria actual son ignoradas cuando el parámetrotime
contiene una marca de tiempo UNIX (p.ej. 946684800) o especifica una zona horaria (p.ej. 2010-01-28T15:00:00+02:00).
Devuelve una nueva instancia de DateTime o FALSE
en caso de error.
Ejemplo #1 Ejemplo de DateTime::createFromFormat()
Estilo orientado a objetos
<?php
$fecha = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
echo $fecha->format('Y-m-d');
?>
Estilo por procedimientos
<?php
$fecha = date_create_from_format('j-M-Y', '15-Feb-2009');
echo date_format($fecha, 'Y-m-d');
?>
El resultado de los ejemplos serían:
2009-02-15
Ejemplo #2 Complejidades de DateTime::createFromFormat()
<?php
echo 'Momento actual: ' . date('Y-m-d H:i:s') . "\n";
$formato = 'Y-m-d';
$fecha = DateTime::createFromFormat($formato, '2009-02-15');
echo "Formato: $formato; " . $fecha->format('Y-m-d H:i:s') . "\n";
$formato = 'Y-m-d H:i:s';
$fecha = DateTime::createFromFormat($formato, '2009-02-15 15:16:17');
echo "Formato: $formato; " . $fecha->format('Y-m-d H:i:s') . "\n";
$formato = 'Y-m-!d H:i:s';
$fecha = DateTime::createFromFormat($formato, '2009-02-15 15:16:17');
echo "Formato: $formato; " . $fecha->format('Y-m-d H:i:s') . "\n";
$formato = '!d';
$fecha = DateTime::createFromFormat($formato, '15');
echo "Formato: $formato; " . $fecha->format('Y-m-d H:i:s') . "\n";
?>
El resultado del ejemplo sería algo similar a:
Momento actual: 2010-04-23 10:29:35 Formato: Y-m-d; 2009-02-15 10:29:35 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