Trabalhando com datas em TypeScript: bibliotecas populares e exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com datas em TypeScript: visão geral das bibliotecas



Trabalhar com datas é uma das tarefas mais comuns no desenvolvimento web. Em TypeScript (e JavaScript), o objeto nativo Date tem capacidades limitadas e uma API inconveniente. Felizmente, existem muitas bibliotecas que simplificam a formatação, parsing, comparação e manipulação de datas. Neste artigo, veremos quatro bibliotecas populares: date-fns, Day.js, Luxon e Moment.js, e mostraremos exemplos de seu uso em TypeScript.



1. date-fns — modular e leve



date-fns é uma biblioteca moderna, construída com base no princípio da modularidade. Você importa apenas as funções necessárias, o que mantém o tamanho do bundle mínimo. date-fns tem excelente suporte a TypeScript nativamente.



Instalação:

npm install date-fns# ouyarn add date-fns


Exemplos de uso:

import { format, addDays, differenceInDays, parseISO } from 'date-fns';

// Formataçãoconst today = new Date();console.log(format(today, 'yyyy-MM-dd')); // 2025-03-15

// Adicionar diasconst future = addDays(today, 10);console.log(format(future, 'dd.MM.yyyy')); // 25.03.2025

// Diferença entre datasconst start = parseISO('2025-01-01');const end = parseISO('2025-03-15');console.log(differenceInDays(end, start)); // 73

// Verificar se é fim de semanaimport { isWeekend } from 'date-fns';console.log(isWeekend(new Date(2025, 2, 15))); // true (sábado)


2. Day.js — alternativa leve ao Moment.js



Day.js é uma biblioteca minimalista (apenas 2 kB) com uma API muito semelhante à do Moment.js. É ideal se você deseja migrar do Moment, mas reduzir o tamanho do bundle. Day.js suporta TypeScript através de tipos.



Instalação:

npm install dayjs# ouyarn add dayjs


Exemplos de uso:

import dayjs from 'dayjs';import relativeTime from 'dayjs/plugin/relativeTime';import utc from 'dayjs/plugin/utc';

dayjs.extend(relativeTime);dayjs.extend(utc);

// Criação e formataçãoconst now = dayjs();console.log(now.format('DD/MM/YYYY HH:mm')); // 15/03/2025 14:30

// Tempo relativoconsole.log(dayjs('2025-03-10').fromNow()); // 5 days ago

// Trabalhando com UTCconst utcDate = dayjs.utc('2025-03-15T12:00:00Z');console.log(utcDate.local().format('HH:mm')); // hora local

// Manipulaçõesconst nextMonth = dayjs().add(1, 'month');console.log(nextMonth.format('MMMM YYYY')); // April 2025


3. Luxon — poderoso e moderno



Luxon é o sucessor do Moment.js, desenvolvido pela mesma equipe. Ele usa o objeto nativo DateTime, suporta fusos horários, intervalos e durações. Luxon é escrito em TypeScript e possui uma excelente tipagem.



Instalação:

npm install luxon# ouyarn add luxon


Exemplos de uso:

import { DateTime, Interval, Duration } from 'luxon';

// Criação e formataçãoconst dt = DateTime.now();console.log(dt.toFormat('yyyy LLL dd')); // 2025 Mar 15

// Fusos horáriosconst ny = DateTime.now().setZone('America/New_York');console.log(ny.toLocaleString(DateTime.DATETIME_FULL)); // March 15, 2025 at 9:30 AM EDT

// Intervalosconst start = DateTime.fromISO('2025-01-01');const end = DateTime.fromISO('2025-03-15');const interval = Interval.fromDateTimes(start, end);console.log(interval.length('days')); // 73

// Duraçõesconst dur = Duration.fromObject({ hours: 5, minutes: 30 });console.log(dur.toHuman()); // 5 hours, 30 minutes

// Parsing

Recommendations