Walter Omar Barrios Vazquez
Juan Pablo Campuzano Monsalve
Walter Omar Barrios Vazquez
Juan Pablo Campuzano Monsalve
Hector Vasquez
Juan David Rueda Quiroga
Remberto Alvaro Molina Colodro
Juan David Rueda Quiroga
Diego Frank Lipa Choque
Juan Pablo Campuzano Monsalve
Erick Estrada Mancilla
David Alejandro González Barba
David Alejandro González Barba
Juan David Rueda Quiroga
Beder Danilo Casa Condori
Nelson Junior Moncada Pirela
Sergio Andrés Barragan
Bryan Castano
Bryan Castano
Bryan Castano
Alejandro Pérez Restrepo
Juan Pablo Campuzano Monsalve
humberto viveros
Uriel Zoe Sanjuán Morales
Ermilo Joel Dorantes Uc
Gracias profe por el recurso, seguro será de utilidad!
Totalmente! Quiero implementar este recurso en un proyecto de práctica, ahora debo pensar en cuál...
estas funciones me recuerdan a la librería "Carbon" de php
Revisandola https://carbon.nesbot.com/docs/, es una herramienta muy buena y no la conocía… GRACIAS!!!
Exacto carbon lo he utilizado bastante, es muy fácil trabajar con fechas con esta libreria
Esto RetaxMaster debería subirlo a packagist para una fácil implementación con composer y facilita si hay actualizaciones
La función add_time() en PHP permite agregar una cantidad de tiempo específica a una marca de tiempo (timestamp) dada, y retorna una nueva marca de tiempo que resulta de la suma. A continuación, se presenta una explicación de cada una de las líneas de código de esta función:
function add_time(string $timestamp, string $timeToAdd) : string {
La función add_time() recibe dos parámetros: la marca de tiempo a la que se le quiere agregar tiempo y la cantidad de tiempo que se desea agregar en formato de cadena de texto. La función retorna una cadena de texto que representa la nueva marca de tiempo resultante.
$timestamp = ($timestamp == "now") ? date("Y-m-d H:i:s") : $timestamp;
Esta línea de código verifica si el valor del primer parámetro $timestamp es igual a la cadena de texto "now". Si es así, la función asigna la fecha y hora actual como valor de $timestamp usando la función date(). Si no es así, la función asigna el valor del parámetro $timestamp.
$timeToAdd = explode(" + ", $timeToAdd); foreach ($timeToAdd as $key => $value) $timeToAdd[$key] = translate_time($value, false); $time = implode(" + ", $timeToAdd);
Estas líneas de código convierten la cantidad de tiempo que se desea agregar en formato de cadena de texto en un formato de tiempo compatible con DateInterval. La cantidad de tiempo se divide en partes utilizando el separador " + " y cada parte se pasa a la función translate_time(), que se encarga de convertir cada parte a un formato compatible con DateInterval. Finalmente, las partes se vuelven a unir en una cadena de texto utilizando el separador " + " y se almacenan en la variable $time.
$date = new DateTime($timestamp); $date->add(DateInterval::createFromDateString($time)); return $date->format('Y-m-d H:i:s');
Estas líneas de código crean un objeto DateTime a partir del valor de $timestamp, luego se agrega la cantidad de tiempo especificada utilizando el método add() y la función DateInterval::createFromDateString(). Finalmente, la función retorna la nueva marca de tiempo resultante en formato de cadena de texto utilizando el método format() con el formato "Y-m-d H:i:s".
En resumen, la función add_time() en PHP permite agregar una cantidad de tiempo específica a una marca de tiempo dada y retorna una nueva marca de tiempo resultante en formato de cadena de texto.
Excelente explicación del código amigo!
Gracias por el aporte. Esto me recuerda un problema que me ocurrio con symfony y un paquete de sonata admin de selector de fechas que regresaba un formato que no podia procesarce debido que regresaba los meses en español y tuvimos que modificar ese formato antes de ser guardado en la base de datos.
Usen Carbon de PHP, tambien es una herramienta muy util.
Usar la libreria Carbon PHP simplifica demasiado el uso de fechas, lo recomiendo mucho.
Esto es ORO!!
aqui les comparto el mio
<?php /** * ARCHIVO: date_functions.php * DESCRIPCIÓN: Colección de 10 funciones útiles para el manejo de fechas en PHP. */ // --- 1. Obtener la fecha y hora actual en un formato específico --- /** * Obtiene la fecha y hora actual formateada. * @param string $format El formato deseado (ej: 'Y-m-d H:i:s', 'd/m/Y'). * @param string $timezone La zona horaria (ej: 'America/Lima', 'Europe/Madrid'). * @return string La fecha y hora formateada. */ function getCurrentDateTime($format = 'Y-m-d H:i:s', $timezone = 'UTC') { $dt = new DateTime('now', new DateTimeZone($timezone)); return $dt->format($format); } // --- 2. Formatear una fecha UNIX Timestamp a un formato legible --- /** * Convierte un timestamp UNIX en una cadena de fecha formateada. * @param int $timestamp El timestamp UNIX. * @param string $format El formato deseado. * @return string La fecha formateada. */ function formatTimestamp($timestamp, $format = 'd-m-Y') { return date($format, $timestamp); } // --- 3. Calcular la diferencia en días entre dos fechas --- /** * Calcula la diferencia en días entre dos fechas. * @param string $date1 Primera fecha (ej: '2023-01-01'). * @param string $date2 Segunda fecha. * @return int El número de días de diferencia (valor absoluto). */ function getDateDifferenceInDays($date1, $date2) { $datetime1 = new DateTime($date1); $datetime2 = new DateTime($date2); $interval = $datetime1->diff($datetime2); return (int)$interval->format('%a'); } // --- 4. Sumar o restar días a una fecha --- /** * Agrega o quita días a una fecha dada. * @param string $date La fecha inicial (ej: '2025-10-20'). * @param int $days El número de días a agregar o restar (negativo para restar). * @param string $format El formato de salida. * @return string La nueva fecha formateada. */ function addDaysToDate($date, $days, $format = 'Y-m-d') { $dt = new DateTime($date); $dt->modify("$days days"); return $dt->format($format); } // --- 5. Validar si una cadena es una fecha válida --- /** * Verifica si una cadena de texto es una fecha válida. * @param string $date La cadena a validar. * @param string $format El formato esperado (ej: 'Y-m-d', 'd/m/Y'). * @return bool True si es válida, False en caso contrario. */ function isValidDate($date, $format = 'Y-m-d') { $dt = DateTime::createFromFormat($format, $date); return $dt && $dt->format($format) === $date; } // --- 6. Obtener el día de la semana de una fecha --- /** * Devuelve el día de la semana (en español) de una fecha. * @param string $date La fecha (ej: '2025-10-20'). * @param bool $full Nombre completo (ej: 'Lunes') o abreviado (ej: 'Lun'). * @return string El nombre del día de la semana. */ function getDayOfWeek($date, $full = true) { // Configura el idioma a español para strftime setlocale(LC_TIME, 'es_ES.UTF-8', 'esp'); $timestamp = strtotime($date); $format = $full ? '%A' : '%a'; // strftime es sensible a la configuración local return strftime($format, $timestamp); } // --- 7. Convertir el formato de una fecha --- /** * Cambia el formato de una fecha de entrada a un formato de salida diferente. * @param string $dateString La fecha en su formato original. * @param string $inputFormat El formato actual de la fecha (ej: 'd/m/Y'). * @param string $outputFormat El formato deseado. * @return string|false La fecha en el nuevo formato, o false si la conversión falla. */ function convertDateFormat($dateString, $inputFormat, $outputFormat) { $dt = DateTime::createFromFormat($inputFormat, $dateString); return $dt ? $dt->format($outputFormat) : false; } // --- 8. Obtener el primer o último día del mes --- /** * Obtiene el primer o último día del mes de una fecha dada. * @param string $date La fecha dentro del mes. * @param string $type 'first' para el primer día, 'last' para el último. * @param string $format El formato de salida. * @return string La fecha solicitada. */ function getMonthBoundary($date, $type = 'first', $format = 'Y-m-d') { $dt = new DateTime($date); if ($type === 'first') { $dt->modify('first day of this month'); } else { // 'last' $dt->modify('last day of this month'); } return $dt->format($format); } // --- 9. Calcular la edad a partir de una fecha de nacimiento --- /** * Calcula la edad en años a partir de una fecha de nacimiento. * @param string $birthDate La fecha de nacimiento (ej: '1990-05-15'). * @return int La edad en años. */ function calculateAge($birthDate) { $birth = new DateTime($birthDate); $now = new DateTime(); $interval = $now->diff($birth); return (int)$interval->y; } // --- 10. Comprobar si un año es bisiesto --- /** * Determina si un año específico es bisiesto. * @param int $year El año a comprobar. * @return bool True si es bisiesto, False en caso contrario. */ function isLeapYear($year) { return date('L', mktime(0, 0, 0, 1, 1, $year)); } // ---------------------------------------------------------------- // EJEMPLO DE USO DE LAS FUNCIONES // ---------------------------------------------------------------- echo "<h2>Ejemplo de Uso de Funciones de Fecha</h2>"; $fecha_ejemplo = '2024-11-06'; $fecha_ayer = '2024-11-05'; $fecha_nacimiento = '1985-03-22'; $timestamp = time(); echo "<ul>"; echo "<li>**1. Fecha y Hora Actual (Lima):** " . getCurrentDateTime('d/m/Y H:i:s', 'America/Lima') . "</li>"; echo "<li>**2. Timestamp Formateado:** " . formatTimestamp($timestamp, 'H:i:s - d M Y') . "</li>"; echo "<li>**3. Diferencia entre $fecha_ejemplo y $fecha_ayer (días):** " . getDateDifferenceInDays($fecha_ejemplo, $fecha_ayer) . "</li>"; echo "<li>**4. Sumar 5 días a $fecha_ejemplo:** " . addDaysToDate($fecha_ejemplo, 5) . "</li>"; echo "<li>**5. ¿Es '2024-15-40' una fecha válida (Y-m-d)?** " . (isValidDate('2024-15-40') ? 'Sí' : 'No') . "</li>"; echo "<li>**6. Día de la semana de $fecha_ejemplo (completo):** " . getDayOfWeek($fecha_ejemplo) . "</li>"; echo "<li>**7. Conversión de '06/11/2024' (d/m/Y) a Y-m-d:** " . convertDateFormat('06/11/2024', 'd/m/Y', 'Y-m-d') . "</li>"; echo "<li>**8. Último día del mes de $fecha_ejemplo:** " . getMonthBoundary($fecha_ejemplo, 'last') . "</li>"; echo "<li>**9. Edad a partir de $fecha_nacimiento:** " . calculateAge($fecha_nacimiento) . " años</li>"; echo "<li>**10. ¿Es 2024 un año bisiesto?** " . (isLeapYear(2024) ? 'Sí' : 'No') . "</li>"; echo "</ul>"; ?>
Que buen paquete de funciones! gracias.
Gracias Retax !!
Heyyy, Los segundos de Unix Time, tambien que si me pdorian servir para hacer una Codigo Cryptografia Simetrica, ps del tiempo Unix Yo Puedo sacar Randomness para generador de numeros aleatorios y meterlos en una Hash Function y generar una clave aleatoria secreta para encrpytar cualquier cosa que se me ocurra, . habria que pasarle el mod Operator % al time() que da un numero bien grande de segundos desde 1970-01-01 00:00:00 y eso me genera un numero random que luego utilizo para generar crpytografia,
Ufff Genial todo esto esta facinante.
Sin embargo : Yo estoy seguro que php debe tener alguna libreria 'lib' que haga todo esto ya en criptografia. vayah tla parece que por la noche es cuando surgen las mejores ideas :
Heyyy otra Fantastica apliacion por esta clase es hacer un DeadLine para mis Usuarios a partir de una fecha&&Hora establecida en mi aplicacion. , Asi Algo que Diga :
te quedan 4 das + 5h + 6 mtes para que renueves tu SubCription Premium.
Genail . El Cielo es el Limite para aplicarse todo esto en una webApp real.
PD: Gracias @RetaxMaster por sus Buenos Consejos , por esta clase y sobre todo por las Retax Function que nos dais hoy.
echo "Today is Jan-2025\n";
Esta Clase me hace pensar en muchas formas de aplicarse en un BackENd PHP + RDB_SQL para traer las fechas de TIMESTAMP de una base de datos SQL y mostraerselas a mis Usuarios en FrontEnd con formato Humano con dias de la semana y todo eso .
Todos los Motores deSQL-DB tiene el tipo de dato TimeStamp y luego asi mando a mi Logica en php para que lea una atributo fecha como CREEATE_USER de typo TIMESTAMP de mi base de datos , luego lo transformo con $date->format() y le hago un dff("en YYYY - m -d ") y le paso eso a mi usuario en su cliente con un bonito mensaje que diga, -"Gracias por Unirte a nosotros por $intervalTime tiempo " en una etiqueta html o algo asi que se puede hacer directamente desde php.
Realmente si que existen miles de posiblidades para aplicar todas estas Clses DateTime en alguna aplicacion real, y eso le dara al usuario un Bonito reconocimiento .
Ufff ya quiero comenzar con Laravel para hacer Proyectos reales.
Sorprendente 😮, muy bueno el recurso.
Excelente recurso!
Que genial aporte profe Retax! se agradece
Muchas gracias, este recurso esta genial! gracias por compartirlo
Se agradece el arsenal de funciones para fechas.