DateInterval::createFromDateString

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateInterval::createFromDateStringEstablece un objeto DateInterval desde las partes relativas de una cadena

Descripción

Estilo orientado a objetos

public static DateInterval::createFromDateString(string $datetime): DateInterval

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.

Parámetros

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().

Valores devueltos

Devuelve DateInterval en caso de éxito. Estilo por procedimientos devuelve false en caso de error.

Errores/Excepciones

Solo en la API Orientada a Objetos: Si se pasa una cadena de fecha/hora inválida, se lanza DateMalformedStringException.

Historial de cambios

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.

Ejemplos

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)
}

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top