Обчислення дати у майбутньому або минулому

TypeScript:
Обчислення дати у майбутньому або минулому

Як це зробити:

// Додавання днів до поточної дати
function addDays(date: Date, days: number): Date {
  const result = new Date(date);
  result.setDate(result.getDate() + days);
  return result;
}

// Віднімання днів від поточної дати
function subtractDays(date: Date, days: number): Date {
  return addDays(date, -days);
}

// Приклад використання
const today = new Date();
console.log(today);               // Показує поточну дату
console.log(addDays(today, 10));  // Показує дату за 10 днів
console.log(subtractDays(today, 5)); // Показує дату 5 днів назад

Пірнаємо глибше:

Використання класу Date у JavaScript і TypeScript для обрахунку дат — це базовий метод, який існує вже роками. Альтернативи, як Moment.js і date-fns, пропонують більше можливостей і зручностей, але з недавніх пір Moment.js більше не розвивається, тому date-fns чи навіть нативний Intl API можуть бути кращим вибором.

Обрахунок дат може включати часові пояси та літній час, що ускладнює завдання. Рекомендується використовувати бібліотеки, що можуть впоратися з цими питаннями.

Також, важливим є і коректна обробка високосних років і варіацій у кількості днів у місяцях. TypeScript не робить це автоматично, тому обережно використовуйте setDate і подібні методи, або застосовуйте зовнішні бібліотеки.

Дивіться також:

  • MDN Web Docs Date
  • date-fns — сучасна бібліотека для роботи з датами
  • Luxon — міцна бібліотека для дат та часу, створена одними з колишніх розробників Moment.js
  • Day.js — легковага бібліотека для роботи з датами, що має схожий API з Moment.js