Obiekt Date: części daty i rachunki

Timery i daty - JavaScript na stronach WWW (HTML/CSS/JS)

`new Date(rok, miesiąc, dzień)` tworzy datę, ale miesiące liczy od ZERA (listopad to 10). `getDay()` zwraca dzień tygodnia od niedzieli (0). Dodawanie dni to `setDate(getDate() + n)`: przeglądarka sama przechodzi przez koniec miesiąca i roku. Różnica dwóch dat to milisekundy; dzieląc przez liczbę milisekund doby i zaokrąglając (zmiana czasu letniego!), dostajemy dni.

<!DOCTYPE html>
<html lang="pl">
<head>
  <meta charset="utf-8">
  <title>Date</title>
  <style>
    body { font-family: sans-serif; max-width: 36em; line-height: 1.4; }
    input, select, button, textarea { font: inherit; padding: 0.2em 0.4em; }
    table { border-collapse: collapse; }
    th, td { border: 1px solid #94a3b8; padding: 0.2em 0.6em; }
  </style>
</head>
<body>
  <pre id="out"></pre>
  <script>
    const DAYS = ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota'];
    // "2026-11-13" -> data o północy czasu lokalnego (new Date(napis) liczy w UTC)
    function parseDate(text) {
      const [y, m, d] = text.split('-').map(Number);
      return new Date(y, m - 1, d);
    }

    function formatDate(date) {
      const dd = String(date.getDate()).padStart(2, '0');
      const mm = String(date.getMonth() + 1).padStart(2, '0');
      return `${dd}.${mm}.${date.getFullYear()}`;
    }
    const DAY_MS = 24 * 60 * 60 * 1000;
    const date = new Date(2026, 10, 13);
    const later = new Date(date);
    later.setDate(later.getDate() + 50);
    const newYear = new Date(2027, 0, 1);

    document.getElementById('out').textContent = [
      'data: ' + formatDate(date),
      'miesiąc z getMonth(): ' + date.getMonth() + ' (czyli ' + (date.getMonth() + 1) + ')',
      'dzień tygodnia: ' + date.getDay() + ' = ' + DAYS[date.getDay()],
      'za 50 dni: ' + formatDate(later) + ', ' + DAYS[later.getDay()],
      'dni do Nowego Roku: ' + Math.round((newYear - date) / DAY_MS),
      'ostatni dzień lutego 2028: ' + new Date(2028, 2, 0).getDate(),
    ].join('\n');
  </script>
</body>
</html>

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu JavaScript na stronach WWW·Zaloguj się, aby zapisać postęp na koncie.