Plac zabaw Moment.js
Interaktywny plac zabaw do eksperymentowania z API dat i czasu Moment.js – formatowanie, parsowanie, manipulowanie datami z bieżącym wynikiem
Wejście
Wyjście
Instrukcja
Co to jest Moment.js?
Moment.js jest szeroko używaną biblioteką JavaScript do parsowania, walidacji, manipulacji i formatowania dat. Przed pojawieniem się nowoczesnych alternatyw Moment.js był de facto standardem obsługi dat w aplikacjach JavaScript. Biblioteka oferuje czyste, łańcuchowe API, które sprawia, że praca z datami jest intuicyjna i prosta. Choć istnieją nowsze biblioteki, takie jak date-fns i Luxon, Moment.js jest nadal intensywnie używany w starszych kodach i jest aktywnie utrzymywany pod kątem poprawek błędów. Zrozumienie Moment.js jest niezbędne dla programistów pracujących nad istniejącymi projektami, które na niej polegają.
Dlaczego warto używać biblioteki do manipulacji datami?
Wbudowany obiekt JavaScript Date jest notorycznie trudny w użyciu. Ma niejednoznaczne zachowanie w różnych przeglądarkach, mylące indeksowanie miesięcy (0‑11 zamiast 1‑12), ograniczone możliwości formatowania i brak wbudowanej obsługi stref czasowych. Biblioteki dat, takie jak Moment.js, rozwiązują te problemy, oferując spójne, dobrze udokumentowane API. Obsługują przypadki brzegowe, takie jak przejścia na czas letni, lata przestępne i formatowanie zależne od lokalizacji, automatycznie, oszczędzając programistom pisania podatnej na błędy logiki dat od podstaw.
Opis narzędzia
Moment.js Playground to interaktywne środowisko przeglądarkowe do eksperymentowania z biblioteką Moment.js. Piszesz i uruchamiasz kod JavaScript bezpośrednio w edytorze z pełnym dostępem do Moment.js i Moment Timezone. Playground automatycznie wykonuje Twój kod w miarę pisania (z debouncingiem) i wyświetla całe wyjście konsoli w panelu stylizowanym na terminal poniżej. Jest idealny do nauki Moment.js, testowania formatów dat, debugowania obliczeń dat oraz prototypowania logiki związanej z czasem bez konieczności konfigurowania środowiska programistycznego.
Przykłady
Formatowanie bieżącej daty:
const now = moment();
console.log(now.format("MMMM Do, YYYY"));
// Wyjście: December 30th, 2025
console.log(now.format("dddd, h:mm A"));
// Wyjście: Monday, 3:45 PMParsowanie różnych formatów dat:
const date1 = moment("2025-12-25", "YYYY-MM-DD");
const date2 = moment("25/12/2025", "DD/MM/YYYY");
const date3 = moment("Dec 25, 2025", "MMM D, YYYY");
console.log(date1.format("dddd")); // Thursday
console.log(date2.isValid()); // true
console.log(date3.month()); // 11 (0-indexed)Obliczanie czasu względnego:
const past = moment().subtract(3, "days");
const future = moment().add(2, "weeks");
console.log(past.fromNow()); // 3 days ago
console.log(future.fromNow()); // in 14 days
console.log(past.from(future)); // 17 days agoArytmetyka dat:
const date = moment("2025-01-15");
const nextMonth = date.clone().add(1, "month");
const lastWeek = date.clone().subtract(1, "week");
const endOfMonth = date.clone().endOf("month");
console.log(nextMonth.format("YYYY-MM-DD")); // 2025-02-15
console.log(lastWeek.format("YYYY-MM-DD")); // 2025-01-08
console.log(endOfMonth.format("YYYY-MM-DD")); // 2025-01-31Praca z okresami (durations):
const start = moment("2025-01-01");
const end = moment("2025-12-31");
const duration = moment.duration(end.diff(start));
console.log(duration.asDays() + " days"); // 364 days
console.log(duration.asWeeks() + " weeks"); // 52 weeks
console.log(duration.humanize()); // a yearPorównywanie dat:
const date1 = moment("2025-06-15");
const date2 = moment("2025-12-25");
console.log(date1.isBefore(date2)); // true
console.log(date1.isAfter(date2)); // false
console.log(date1.isSame(date2, "year")); // true
console.log(date1.isBetween("2025-01-01", "2025-08-01")); // truePraca ze strefami czasowymi:
const now = moment();
console.log(now.tz("America/New_York").format("h:mm A z"));
console.log(now.tz("Europe/London").format("h:mm A z"));
console.log(now.tz("Asia/Tokyo").format("h:mm A z"));Funkcje
- Pełna biblioteka Moment.js: Dostęp do wszystkich funkcji Moment.js, w tym parsowania, formatowania, manipulacji i porównań
- Obsługa stref czasowych: Moment Timezone jest wstępnie załadowany, umożliwiając pracę ze strefami czasowymi na całym świecie
- Wykonywanie kodu na żywo: Kod uruchamia się automatycznie w miarę pisania, dzięki inteligentnemu debouncingowi
- Wbudowany terminal: Natychmiastowy podgląd wyjścia konsoli bez otwierania narzędzi deweloperskich przeglądarki
- Podświetlanie składni: Podświetlanie składni JavaScript dla lepszej czytelności kodu
- Obsługa błędów: Błędy w czasie wykonywania są wyraźnie wyświetlane w panelu terminala
Przypadki użycia
- Nauka Moment.js: Eksperymentuj z API i zobacz wyniki od razu, bez konfiguracji projektu
- Testowanie formatów: Wypróbuj różne tokeny formatowania, aby uzyskać dokładnie taki wynik daty, jakiego potrzebujesz
- Debugowanie obliczeń dat: Testuj złożoną arytmetykę dat przed wdrożeniem w aplikacji
- Konwersje stref czasowych: Szybko konwertuj czasy pomiędzy różnymi strefami
- Utrzymanie kodu legacy: Testuj fragmenty kodu Moment.js przy utrzymaniu istniejących aplikacji
Popularne tokeny formatowania
| Token | Opis | Przykład |
|---|---|---|
YYYY |
4‑cyfrowy rok | 2025 |
YY |
2‑cyfrowy rok | 25 |
MM |
2‑cyfrowy miesiąc | 01‑12 |
MMM |
Skrócona nazwa miesiąca | Jan, Feb |
MMMM |
Pełna nazwa miesiąca | January |
DD |
2‑cyfrowy dzień | 01‑31 |
Do |
Dzień z końcówką | 1st, 2nd, 3rd |
dddd |
Pełna nazwa dnia tygodnia | Monday |
ddd |
Skrócona nazwa dnia | Mon |
HH |
Godzina w formacie 24‑godzinnym | 00‑23 |
hh |
Godzina w formacie 12‑godzinnym | 01‑12 |
mm |
Minuty | 00‑59 |
ss |
Sekundy | 00‑59 |
A |
AM/PM (wielkie litery) | AM, PM |
a |
am/pm (małe litery) | am, pm |
z |
Skrót strefy czasowej | EST, PST |
Z |
Offset strefy czasowej | +05:00 |
Popularne metody – odniesienie
| Metoda | Opis | Przykład |
|---|---|---|
moment() |
Utwórz bieżący moment | moment() |
format(string) |
Formatuj do łańcucha | moment().format("YYYY-MM-DD") |
add(n, unit) |
Dodaj czas | moment().add(7, "days") |
subtract(n, unit) |
Odejmij czas | moment().subtract(1, "month") |
startOf(unit) |
Początek jednostki | moment().startOf("week") |
endOf(unit) |
Koniec jednostki | moment().endOf("month") |
fromNow() |
Czas względny | moment("2025-01-01").fromNow() |
diff(moment) |
Różnica | momentA.diff(momentB, "days") |
isBefore(moment) |
Czy jest przed | momentA.isBefore(momentB) |
isAfter(moment) |
Czy jest po | momentA.isAfter(momentB) |
isSame(moment, unit) |
Czy jest taki sam | momentA.isSame(momentB, "month") |
isValid() |
Sprawdź ważność | moment("invalid").isValid() |
clone() |
Utwórz kopię | moment().clone() |
tz(zone) |
Konwertuj strefę czasową | moment().tz("America/New_York") |
Jednostki czasu
Moment.js obsługuje następujące jednostki czasu w operacjach add, subtract, startOf, endOf i diff:
years/yquarters/Qmonths/Mweeks/wdays/dhours/hminutes/mseconds/smilliseconds/ms