Introducción a Angular y Fundamentos

1

Desarrolla una ToDoApp con Angular y Signals

2

Creando tu primer proyecto en Angular

3

Angular: Componentes y Rutas Básicas

4

Interpolación de Strings en Angular: Uso y Ejemplos Prácticos

5

Enlace de Propiedades HTML con Angular: Guía Práctica

6

Manejo de Eventos Click y Cambios en Angular

7

Eventos de Teclado en JavaScript: Captura y Manejo Eficiente

8

Reactividad granular en Angular: Implementación con Signals

9

Implementación de Reactividad en HTML con Signals

Estructuras de control en Angular

10

Control de Estructuras y Señales en Angular

11

Creación de listas dinámicas con JavaScript

12

Interfaz en TypeScript: Definición y Uso Práctico

13

Actualización de Arrays con Programación Inmutable en Angular

14

Uso de ngIf para Condicionales en Angular

15

Pluralización en Angular: Uso de directivas ngIf y ngSwitch

16

Formularios Reactivos en Angular: Controlando Inputs Eficazmente

17

Validaciones de Formularios en Angular: Control de Inputs

Alistando tu aplicación para producción

18

Integración de SVG en Angular para aplicaciones interactivas

19

Estilización Dinámica con Angular: Clases y Validaciones

20

Edición Dinámica de Tareas con JavaScript y CSS

21

Estados Computados con Signals en Angular

22

Persistencia de datos con localStorage en Angular

23

Compilación Angular: Optimización y Preparación para Producción

24

Despliegue de Aplicaciones en Fibers Hosting

25

Control de Flujo en Angular: Nueva Sintaxis Declarativa

26

Sintaxis de Bucle For en JavaScript Moderno

27

Migración de Sintaxis Angular: de ng-for/ng-if a Nuevas Directivas

Componentes Reutilizables y Comunicación

28

Integración de Tailwind CSS en Proyecto Angular

29

Creación y Gestión de Componentes en Angular

30

Componente Producto en Angular: Renderizado y Reutilización

31

Debugging de Apps Angular con DevTools

32

Inputs en Angular: Comunicación entre Componentes Padre e Hijo

33

Comunicación entre Componentes con Outputs en Angular

34

Maquetación de tiendas online con Tailwind CSS

Ciclo de vida de los componentes

35

Ciclo de Vida de Componentes Angular: Aprende Cada Fase Paso a Paso

36

Desarrollo de Aplicaciones con Angular: Ciclo de Vida de Componentes

37

Ciclo de Vida de Componentes en Angular: ngOnInit y Otros Eventos

38

Validación de cambios en ngOnChanges en Angular

39

Prevención de fugas de memoria con ngOnDestroy en Angular.

40

Uso de WaveSurfer.js para Crear Reproductor de Audio en Angular

41

Curso: Diseño de Interfaz con Tailwind CSS

Mejorando la interfaz del producto

42

Patrones de Diseño y Arquitectura para Aplicaciones Web

43

Creación de un Header Dinámico con Angular

44

Implementación de Side Menu en Carrito de Compras con JavaScript

45

Reactividad y Comunicación entre Componentes en Angular

46

Cálculo Total en Carrito de Compras con Angular Signals

47

Gestión de Estado en Angular: Supera el Problema del InputDrilling

48

Servicio en Angular para Estado Global del Carrito de Compras

49

Inyección de Dependencias en Angular: Uso y Buenas Prácticas

Integración y Datos

50

Conexión a APIs REST con Angular: Obteniendo y Gestionando Datos

51

Alias en TypeScript: Simplificando Imports en Proyectos Grandes

52

Uso de Pipes en Angular: Transformación de Datos Simplificada

53

Creación de Pipes Personalizados en Angular

54

Manipulación de Fechas con Date Functions en Angular

55

Directivas en Angular: Manipulación Directa del DOM

56

Despliegue de Aplicaciones Angular en Vercel: Guía Completa

Enrutamiento y Navegación

57

Página personalizable 404 con Angular: Guía paso a paso

58

Redirección con Router Link en Angular: Flujo sin Recarga Total

59

Uso de Layouts Compartidos en Angular para Estructura Sostenible

60

Uso de RouterLinkActive en Angular para Rutas Activas

61

Routing en Angular: Parámetros de URL para Detalle de Productos

62

Detalles y Renderizado de Producto con Angular

63

Galería de Imágenes Dinámica con Angular

64

Conexión de Servicios en Angular: Moneda, Carrito y Galería

Perfeccionando tu e-commerce

65

Filtrado de Productos por Categoría en Angular

66

Filtrado dinámico de productos con query params en Angular

67

Lazy Loading y Code Splitting en Aplicaciones Angular

68

Optimización de JavaScript con Dynamic Imports en Angular

69

Optimizar Angular: Preloading para Mejorar Carga en Redes Lentas

70

Migración a la Nueva Sintaxis de Angular Step-by-Step

71

Despliegue de Aplicaciones Web con Verzal Paso a Paso

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Manipulación de Fechas con Date Functions en Angular

54/71
Recursos

¿Cómo integrar librerías en un proyecto Angular para manejar fechas?

Uno de los desafíos más comunes al programar en JavaScript es la manipulación y manejo de fechas. Sin embargo, existen librerías que pueden facilitarnos esta tarea, integrándolas en nuestros proyectos de Angular. A continuación, te explicamos cómo utilizar date-fns, una poderosa herramienta de JavaScript, para calcular distancias entre fechas de forma eficaz.

¿Cómo instalar y utilizar Date Functions?

Para integrarte al ecosistema de JavaScript desde Angular, es crucial contar con herramientas efectivas. Aquí es donde entra en juego date-fns, una librería que simplifica la utilización de fechas. Sigue estos pasos para instalarla y aplicarla en tu proyecto:

  1. Instalación de la librería: Ejecuta el siguiente comando en tu terminal para agregar date-fns a tu proyecto:

    npm install date-fns
    

    Esta acción integra las funcionalidades de manejo de fechas al entorno de Angular.

  2. Uso de la función Format Distance: Tras la instalación, puedes utilizar el pipe time ago para calcular el tiempo transcurrido desde una fecha específica hasta el presente:

    import { formatDistance } from 'date-fns';
    
    transform(value: string): string {
        const date = new Date(value);
        return formatDistance(date, new Date());
    }
    

    Aquí, formatDistance devuelve una cadena que describe el tiempo transcurrido entre las dos fechas, como "hace unas semanas" o "hace tres meses".

¿Cómo implementar Time Ago en HTML?

Una vez configurado el pipe en Angular, es hora de utilizarlo en tu componente HTML. Este enfoque reemplaza el uso de los pipes de Angular y te da control sobre cómo se muestran las fechas:

  1. Borra elementos HTML innecesarios: Reajusta tu HTML eliminando elementos que no aporten al nuevo pipe, enfocándote en agregar el pipe de time ago.

  2. Implementación del pipe Time Ago: En el HTML, utiliza el pipe creado para mostrar las fechas:

    <div>{{ product.creationDate | timeAgo }}</div>
    

    Esta línea permite visualizar la diferencia entre la fecha de creación de un producto y la fecha actual directamente en la interfaz de usuario.

¿Cuáles son los beneficios de utilizar Date Functions?

El uso de date-fns no solo facilita el manejo de fechas, sino que también ofrece varias ventajas para tu proyecto en Angular:

  • Precisión y simplicidad: Calcula distancias entre fechas de manera precisa y sencilla.
  • Flexibilidad: Puedes integrarlo en múltiples proyectos y sistemas que requieran características de manejo de fechas.
  • Optimización del ecosistema de JavaScript: Aprovechas al máximo las herramientas útiles del ecosistema de JavaScript dentro de Angular.

Empleando date-fns, puedes mejorar significativamente la gestión de fechas en tus proyectos, sin importar su envergadura. Además, sigue explorando otras librerías que pueden integrarse fácilmente en tu entorno de Angular para optimizar tus aplicaciones. ¿Listo para llevar tus habilidades de programación al siguiente nivel? ¡Sigue practicando y explorando nuevas herramientas constantemente!

Aportes 6

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

La librería de date functions tiene también una función que mide la distancia desde una fecha hasta ahora por si sola sin necesidad de hacer un new Date(), por lo que en mi pipe lo use de esta manera: ```js return formatDistanceToNow(new Date(value), { addSuffix: true }); ```
Si de casualidad quereis hacerlo mediante html, hay una opción en el mismpo pipe date. ![](https://static.platzi.com/media/user_upload/image-0e0fce2b-67ad-4e7b-a819-99638097ca28.jpg) ![](https://static.platzi.com/media/user_upload/image-65ee00dc-6227-433d-87dd-e6df674d4675.jpg)
Se los dejo en el viejo y confiable JS. Es recomendable no usar librerías en caso muy necesarios, ya que estas impactan directamente en el bundle de la aplicación y, por ende, en el peso de la app / performance. `transform(``value``: Date): string {` ` const ``currentDateDay ``= new ``Date``().getDate();` ` const ``lastUpdateDay ``= new ``Date``(``value``).getDate();` ` const ``currentMinutes ``= new ``Date``().getMinutes();` ` const ``lastUpdateMinutes ``= new ``Date``(``value``).getMinutes();` ` const ``daysUpdate ``= ``currentDateDay ``- ``lastUpdateDay``;` ` let ``minutesUpdate ``= null;` ` if (``daysUpdate ``=== 0) {` ` ``minutesUpdate ``= ``currentMinutes ``- ``lastUpdateMinutes``;` ` }` ` return ``minutesUpdate ```? `${```minutesUpdate```} minutos` : `${```daysUpdate```} dias`;`` `}`
Se puede concatenar los strings "added" y "ago" para que quede más completo. `return "added " + formatDistance(new Date(), new Date(value)) + " ago.";`

Yo use dayjs 🤓👆
Y quedo asi:

import { Pipe, PipeTransform } from '@angular/core';
import dayjs from 'dayjs';
import relativeTime from "dayjs/plugin/relativeTime";

dayjs.extend(relativeTime);

@Pipe({
  name: 'timeAgo',
  standalone: true
})
export class TimeAgoPipe implements PipeTransform {

  transform(value: string): string {
    return dayjs(value).fromNow();
  }

}