date-fns is a modern JavaScript date utility library with 200+ tree-shakeable functions for parsing, formatting, and manipulating dates.
Installation
npm install date-fns
Formatting
import { format, formatDistance, formatRelative } from "date-fns";
const now = new Date();
console.log(format(now, "yyyy-MM-dd HH:mm:ss")); // 2026-03-29 14:30:00
console.log(format(now, "EEEE, MMMM do yyyy")); // Saturday, March 29th 2026
console.log(formatDistance(new Date(2026, 2, 25), now, { addSuffix: true })); // 4 days ago
Parsing
import { parse, parseISO, isValid } from "date-fns";
const date1 = parseISO("2026-03-29T10:00:00Z");
const date2 = parse("29/03/2026", "dd/MM/yyyy", new Date());
console.log(isValid(date1)); // true
Comparison
import { isBefore, isAfter, differenceInDays, isWithinInterval } from "date-fns";
const start = new Date(2026, 0, 1);
const end = new Date(2026, 11, 31);
console.log(differenceInDays(end, start)); // 364
console.log(isWithinInterval(new Date(), { start, end })); // true
Manipulation
import { addDays, subMonths, startOfWeek, endOfMonth, eachDayOfInterval } from "date-fns";
const tomorrow = addDays(new Date(), 1);
const weekStart = startOfWeek(new Date(), { weekStartsOn: 1 });
const days = eachDayOfInterval({ start: new Date(2026, 2, 1), end: new Date(2026, 2, 31) });
console.log(`March has ${days.length} days`);
Locales
import { format } from "date-fns";
import { de, fr, ja } from "date-fns/locale";
console.log(format(new Date(), "PPPP", { locale: de })); // Samstag, 29. März 2026
console.log(format(new Date(), "PPPP", { locale: fr })); // samedi 29 mars 2026
Intervals and Ranges
import { eachWeekOfInterval, getWeek, getYear } from "date-fns";
const weeks = eachWeekOfInterval({
start: new Date(2026, 0, 1),
end: new Date(2026, 2, 31)
});
console.log(`Q1 2026 has ${weeks.length} weeks`);
Need to extract or automate web content at scale? Check out my web scraping tools on Apify — no coding required. Or email me at spinov001@gmail.com for custom solutions.
Top comments (0)