DateInterval::__construct
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateInterval::__construct — Cria um novo objeto DateInterval
Parâmetros
duration
-
Uma especificação de intervalo.
O formato inicia-se com a letra
P
, deperíodo.
Cada período de duração é representado por um valor inteiro seguido do designador de período. Se a duração conter elementos de tempo, essa porção da especificação é precedida pela letraT
.duration
Designadores de PeríodoDesignador de Período Descrição Y
anos M
meses D
dias W
semanas. Convertidas em dias. Antes do PHP 8.0.0, não pode ser combinada com D
.H
horas M
minutos S
segundos Alguns exemplos simples. Dois dias é representado com
P2D
. Dois segundos é representado comPT2S
. Seis anos e cinco minutos é representado comP6YT5M
.Note:
O tipo de unidade deve ser inserida da unidade de maior escala a esquerda da de menor escala, essa a direta. Então, anos antes de meses, meses antes de dias, dias antes de minutos, e etc. Assim, um ano e quatro dias deve ser representado com
P1Y4D
, e nãoP4D1Y
.A especificação também pode ser representada como data e hora. Um exemplo de um ano e quatro dias seria
P0001-00-04T00:00:00
. Porém, valores neste formato não podem exceder o tamanho máximo do período (por exemplo25
horas é inválido).Estes formatos são baseados na » ISO 8601 duration specification.
Erros/Exceções
Dispara uma exceção DateMalformedIntervalStringException quando
o parâmetro duration
não puder ser interpretado como um intervalo. Antes do
PHP 8.3, era uma Exception.
Registro de Alterações
Versão | Descrição |
---|---|
8.3.0 | Agora dispara DateMalformedIntervalStringException em vez de Exception. |
8.2.0 |
Apenas as propriedades y a f ,
invert e days estarão visíveis,
incluindo uma nova propriedade booleana from_string .
|
8.0.0 |
W pode ser combinado com D .
|
Exemplos
Example #1 Construindo e usando objetos da classe DateInterval
<?php
// Cria uma data específica
$someDate = \DateTime::createFromFormat("Y-m-d H:i", "2022-08-25 14:18");
// Cria um intervalo
$interval = new \DateInterval("P7D");
// Adiciona o intervalo
$someDate->add($interval);
// Converte o intervalo para string
echo $interval->format("%d");
O exemplo acima produzirá:
7
Example #2 Exemplo da classe DateInterval
<?php
$interval = new DateInterval('P1W2D');
var_dump($interval);
?>
Saída do exemplo acima no PHP 8.2:
object(DateInterval)#1 (10) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(9) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["invert"]=> int(0) ["days"]=> bool(false) ["from_string"]=> bool(false) }
Saída do exemplo acima no PHP 8:
object(DateInterval)#1 (16) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(9) ["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(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) }
Saída do exemplo acima no PHP 7:
object(DateInterval)#1 (16) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(2) ["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(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) }
Veja Também
- DateInterval::format() - Formata um intervalo
- DateTime::add() - Modifica um objeto DateTime, com adição de dias, meses, anos, horas, minutos e segundos.
- DateTime::sub() - Subtrai uma quantidade de dias, meses, anos, horas, minutos e segundos de um objeto DateTime
- DateTime::diff() - Retorna a diferença entre dois objetos DateTime