PHP 8.1.28 Released!

DateTime::modify

date_modify

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

DateTime::modify -- date_modifyAltera o timestamp

Descrição

Estilo orientado a objetos

public DateTime::modify(string $modifier): DateTime|false

Estilo procedural

Altera o timestamp de um objeto DateTime, incrementando-o ou decrementando-o, em um formato aceito pela função DateTimeImmutable::__construct().

Parâmetros

object

Somente no estilo procedural: Um objeto DateTime retornado por date_create(). A função modifica este objeto.

modifier

Uma string de data/hora. Os formatos válidos são explicados em Formatos de Data e Hora.

Valor Retornado

Retorna o objeto DateTime modificado para encadeamento de métodos ou false em caso de falha.

Erros/Exceções

Apenas para API orientada a objetos: Se uma string inválida de data/hora for passada, é disparada uma exceção DateMalformedStringException.

Registro de Alterações

Versão Descrição
8.3.0 Agora dispara a exceção DateMalformedStringException com DateTime::modify() se uma string inválida for passada, em vez de um aviso. date_modify() não foi modificada.

Exemplos

Exemplo #1 Exemplo do método DateTime::modify()

Estilo orientado a objetos

<?php
$date
= new DateTime('2006-12-12');
$date->modify('+1 day');
echo
$date->format('Y-m-d');
?>

Estilo procedural

<?php
$date
= date_create('2006-12-12');
date_modify($date, '+1 day');
echo
date_format($date, 'Y-m-d');
?>

Os exemplos acima produzirão:

2006-12-13

Exemplo #2 Cuidados na adição ou subtração de meses

<?php
$date
= new DateTime('2000-12-31');

$date->modify('+1 month');
echo
$date->format('Y-m-d') . "\n";

$date->modify('+1 month');
echo
$date->format('Y-m-d') . "\n";
?>

O exemplo acima produzirá:

2001-01-31
2001-03-03

Exemplo #3 Todos os formatos de data e horário são suportados

<?php
$date
= new DateTime('2020-12-31');

$date->modify('July 1st, 2023');
echo
$date->format('Y-m-d H:i') . "\n";

$date->modify('Monday next week');
echo
$date->format('Y-m-d H:i') . "\n";

$date->modify('17:30');
echo
$date->format('Y-m-d H:i') . "\n";
?>

O exemplo acima produzirá:

2023-07-01 00:00
2023-07-03 00:00
2023-07-03 17:30

Veja Também

add a note

User Contributed Notes 1 note

up
0
php_net at striderweb dot com
13 hours ago
You have to be a bit careful with variables here. If for example you want to add a variable amount of minutes you might use `->modify("+$min"). This will not work out if `$min` is a negative number, because modify will see the "+" and ignore the "-". If `$min` equals -10, modify in this example will add ten minutes, not subtract!

What is happening is if the modify string has two operations, the first will be obeyed and later ones will be ignored.

So "+-10 minutes" will add ten minutes, even though you might expect it to add the negative number. Similarly "--10 minutes" will subtract ten minutes, despite the apparent logic of subtracting a negative number.
To Top