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.