(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateInterval::createFromDateString — Establece un objeto DateInterval desde las partes relativas de una cadena
Estilo orientado a objetos
Estilo por procedimientos
Usas los analizadores de fecha/hora como los usados en el constructor de DateTimeImmutable para crear un DateInterval desde las partes relativas de la cadena analizada.
datetime
Una fecha con partes relativas. Específicamente, los formatos relativos admitidos por el analizador utilizados por DateTimeImmutable, DateTime, y strtotime() serán los empleados para construir el objeto DateInterval
Para usar un string con formato ISO-8601 como P7D
, debes
usar DateInterval::__construct().
Devuelve DateInterval en caso de éxito.
Estilo por procedimientos devuelve false
en caso de error.
Solo en la API Orientada a Objetos: Si se pasa una cadena de fecha/hora inválida, se lanza DateMalformedStringException.
Versión | Descripción |
---|---|
8.3.0 |
DateInterval::createFromDateString() ahora lanza
DateMalformedStringException si se pasa
una cadena inválida. Anteriormente, devolvía false ,
y emitía una advertencia.
date_interval_create_from_date_string() no ha
cambiado.
|
8.2.0 |
Las propiedades from_string y
date_string solo serán visibles cuando se crea un
DateInterval con este método.
|
Ejemplo #1 Analizando intervalos de fechas válidos
<?php
// Each set of intervals is equal.
$i = new DateInterval('P1D');
$i = DateInterval::createFromDateString('1 day');
$i = new DateInterval('P2W');
$i = DateInterval::createFromDateString('2 weeks');
$i = new DateInterval('P3M');
$i = DateInterval::createFromDateString('3 months');
$i = new DateInterval('P4Y');
$i = DateInterval::createFromDateString('4 years');
$i = new DateInterval('P1Y1D');
$i = DateInterval::createFromDateString('1 year + 1 day');
$i = new DateInterval('P1DT12H');
$i = DateInterval::createFromDateString('1 day + 12 hours');
$i = new DateInterval('PT3600S');
$i = DateInterval::createFromDateString('3600 seconds');
?>
Ejemplo #2 Analizando combinaciones e intervalos negativos
<?php
$i = DateInterval::createFromDateString('62 weeks + 1 day + 2 weeks + 2 hours + 70 minutes');
echo $i->format('%d %h %i'), "\n";
$i = DateInterval::createFromDateString('1 year - 10 days');
echo $i->format('%y %d'), "\n";
?>
El resultado del ejemplo sería:
449 2 70 1 -10
Ejemplo #3 Analizando intervalos de fechas relativas especiales
<?php
$i = DateInterval::createFromDateString('last day of next month');
var_dump($i);
$i = DateInterval::createFromDateString('last weekday');
var_dump($i);
Output of the above example in PHP 8.2:
object(DateInterval)#1 (2) { ["from_string"]=> bool(true) ["date_string"]=> string(22) "last day of next month" } object(DateInterval)#2 (2) { ["from_string"]=> bool(true) ["date_string"]=> string(12) "last weekday" }
Output of the above example in PHP 8 is similar to:
object(DateInterval)#1 (16) { ["y"]=> int(0) ["m"]=> int(1) ["d"]=> int(0) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(2) ["invert"]=> int(0) ["days"]=> bool(false) ["special_type"]=> int(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) } object(DateInterval)#2 (16) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(0) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(0) ["invert"]=> int(0) ["days"]=> bool(false) ["special_type"]=> int(1) ["special_amount"]=> int(-1) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(1) }