Modificación de objetos DateTime
Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 50 de 68.
Una vez que tienes un objeto DateTime, a menudo necesitas cambiarlo para representar un momento diferente en el tiempo. El método modify() te permite sumar o restar tiempo de tu objeto DateTime utilizando expresiones de lenguaje natural, haciendo que los cálculos de fechas sean intuitivos y legibles.
El método modify() acepta los mismos tipos de cadenas que funcionan con strtotime(), como '+1 day', '-2 weeks' o 'next Friday'. A diferencia de crear un objeto nuevo cada vez, este método modifica el objeto DateTime existente directamente, lo cual es eficiente para operaciones de fecha secuenciales.
<?php
$date = new DateTime();
echo $date->format('Y-m-d'); // Fecha de hoy
$date->modify('+1 week');
echo $date->format('Y-m-d'); // Una semana a partir de hoy
$date->modify('-3 days');
echo $date->format('Y-m-d'); // 4 días a partir de hoy
?>Este enfoque le brinda una gran flexibilidad para los cálculos de fechas. Puede encadenar múltiples modificaciones o utilizar expresiones complejas como '+2 months -1 day' para realizar aritmética de fechas sofisticada mientras mantiene su código claro y fácil de mantener.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Desafío
FácilRecibirás dos entradas: una cadena de fecha en el formato Y-m-d H:i:s y una cadena de modificación. La primera entrada es una fecha y hora específica (ejemplo: 2024-03-15 14:30:25), y la segunda entrada es una expresión de modificación como +1 week, -3 days o +2 months.
Lee ambas entradas, crea un objeto DateTime utilizando la cadena de fecha, utiliza el método modify() para aplicar la expresión de modificación al objeto DateTime y muestra la fecha modificada en el formato Y-m-d H:i:s.
Formato de entrada:
- Primera línea: Una cadena de fecha en el formato
Y-m-d H:i:s(ejemplo:2024-03-15 14:30:25) - Segunda línea: Una cadena de modificación (ejemplo:
+1 weeko-3 dayso+2 months)
Salida esperada: La fecha modificada formateada como Y-m-d H:i:s
Hoja de referencia
El método modify() le permite sumar o restar tiempo de un objeto DateTime utilizando expresiones de lenguaje natural:
<?php
$date = new DateTime();
$date->modify('+1 week'); // Sumar una semana
$date->modify('-3 days'); // Restar tres días
$date->modify('+2 months -1 day'); // Expresiones complejas
?>El método modifica directamente el objeto DateTime existente y acepta los mismos formatos de cadena que strtotime(), como '+1 day', '-2 weeks' o 'next Friday'.
Pruébalo tú mismo
<?php
// Leer la cadena de fecha
$dateString = trim(fgets(STDIN));
// Leer la cadena de modificación
$modificationString = trim(fgets(STDIN));
// TODO: Escribe tu código a continuación
// Crear un objeto DateTime, aplicar la modificación y formatear el resultado
// Imprimir la fecha modificada
echo $modifiedDate;
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Funciones avanzadas
Funciones anónimasClosures y 'use'Funciones de flechaFunciones callbackUso de 'call_user_func'Funciones variablesPaso por referenciaFunciones recursivasResumen: Miscelánea de funciones4Arreglos multidimensionales
Crear un arreglo 2DAcceder a elementos de un arreglo 2DModificar elementos de un arreglo 2DIterar con bucles anidadosArreglos asociativos 2DResumen: Ejercicio de cuadrícula simple7Trabajando con fechas y horas
La función 'date()'Timestamps de Unix con 'time()'Introducción al objeto DateTimeFormateo de objetos DateTimeModificación de objetos DateTimeResumen: Cálculos con fechas2Manipulación avanzada de arrays
Agregar con 'array_push'Eliminar con 'array_pop'Agregar con 'array_unshift'Eliminar con 'array_shift'Fusionar arrays indexadosFusionar arrays asociativosExtraer con 'array_slice'Valores con 'in_array'Claves con 'array_search'Resumen: Ejercicio de Playlist3Ordenar Arrays
Ordenar arrays indexados de forma ascendenteOrdenar arrays indexados de forma descendenteOrdenar arrays asociativos por valorOrdenar arrays asociativos por claveOrdenación por orden naturalOrdenación personalizada con 'usort'Resumen: Ordenar tablas de clasificación