Modificando Objetos DateTime
Parte da seção Lógica & Fluxo do Journey de PHP da Coddy — lição 50 de 68.
Uma vez que você tenha um objeto DateTime, você frequentemente precisará alterá-lo para representar um momento diferente no tempo. O método modify() permite que você adicione ou subtraia tempo do seu objeto DateTime usando expressões de linguagem natural, tornando os cálculos de data intuitivos e legíveis.
O método modify() aceita os mesmos tipos de strings que funcionam com strtotime(), tais como '+1 day', '-2 weeks' ou 'next Friday'. Ao contrário de criar um novo objeto a cada vez, este método modifica o objeto DateTime existente diretamente, o que é eficiente para operações de data sequenciais.
<?php
$date = new DateTime();
echo $date->format('Y-m-d'); // Data de hoje
$date->modify('+1 week');
echo $date->format('Y-m-d'); // Uma semana a partir de hoje
$date->modify('-3 days');
echo $date->format('Y-m-d'); // 4 dias a partir de hoje
?>Esta abordagem oferece uma flexibilidade poderosa para cálculos de data. Você pode encadear múltiplas modificações ou usar expressões complexas como '+2 months -1 day' para realizar aritmética de datas sofisticada, mantendo seu código claro e fácil de manter.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Desafio
FácilVocê receberá duas entradas: uma string de data no formato Y-m-d H:i:s e uma string de modificação. A primeira entrada é uma data e hora específica (exemplo: 2024-03-15 14:30:25), e a segunda entrada é uma expressão de modificação como +1 week, -3 days ou +2 months.
Leia ambas as entradas, crie um objeto DateTime usando a string de data, use o método modify() para aplicar a expressão de modificação ao objeto DateTime e imprima a data modificada no formato Y-m-d H:i:s.
Formato de entrada:
- Primeira linha: Uma string de data no formato
Y-m-d H:i:s(exemplo:2024-03-15 14:30:25) - Segunda linha: Uma string de modificação (exemplo:
+1 weekou-3 daysou+2 months)
Saída esperada: A data modificada formatada como Y-m-d H:i:s
Folha de consulta
O método modify() permite adicionar ou subtrair tempo de um objeto DateTime usando expressões de linguagem natural:
<?php
$date = new DateTime();
$date->modify('+1 week'); // Adiciona uma semana
$date->modify('-3 days'); // Subtrai três dias
$date->modify('+2 months -1 day'); // Expressões complexas
?>O método modifica o objeto DateTime existente diretamente e aceita os mesmos formatos de string que strtotime(), como '+1 day', '-2 weeks' ou 'next Friday'.
Experimente você mesmo
<?php
// Lê a string de data
$dateString = trim(fgets(STDIN));
// Lê a string de modificação
$modificationString = trim(fgets(STDIN));
// TODO: Escreva seu código abaixo
// Cria um objeto DateTime, aplica a modificação e formata o resultado
// Exibe a data modificada
echo $modifiedDate;
?>Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Funções Avançadas
Funções AnônimasClosures e 'use'Arrow FunctionsFunções de CallbackUsando 'call_user_func'Funções VariáveisPassagem por ReferênciaFunções RecursivasRecapitulação: Mix de Funções4Arrays Multidimensionais
Criando um Array 2DAcessando Elementos de um Array 2DModificando Elementos de um Array 2DIterando com Loops AninhadosArrays Associativos 2DRecapitulação: Exercício de Grade Simples7Trabalhando com Datas e Horas
A Função 'date()'Unix Timestamps com 'time()'Introdução ao Objeto DateTimeFormatando Objetos DateTimeModificando Objetos DateTimeRecapitulação: Cálculos de Data2Manipulações Avançadas de Arrays
Adicionando com 'array_push'Removendo com 'array_pop'Adicionando com 'array_unshift'Removendo com 'array_shift'Mesclando Arrays IndexadosMesclando Arrays AssociativosExtraindo com 'array_slice'Valores com 'in_array'Chaves com 'array_search'Recapitulação: Exercício de Playlist3Ordenação de Arrays
Ordenar Arrays Indexados (Crescente)Ordenar Arrays Indexados (Decrescente)Ordenar Arrays Associativos por ValorOrdenar Arrays Associativos por ChaveOrdenação por Ordem NaturalOrdenação Personalizada com 'usort'Recapitulação: Ordenação de Leaderboard