Moment.js Playground
Интерактивна площадка за експериментиране с Moment.js API за дата и време - форматиране, парсиране, манипулиране на дати с живи резултати
Вход
Изход
Прочети ме
Какво е Moment.js?
Moment.js е широко използвана JavaScript библиотека за парсване, валидиране, манипулиране и форматиране на дати. Преди появата на модерните алтернативи, Moment.js беше де факто стандартът за работа с дати в JavaScript приложенията. Тя предоставя чист, верижен API, който прави работата с дати интуитивна и лесна. Въпреки че съществуват по-нови библиотеки като date-fns и Luxon, Moment.js остава широко използвана в наследени кодови бази и все още се поддържа активно за корекции на грешки. Разбирането на Moment.js е съществено за разработчиците, които работят с съществуващи проекти, които разчитат на нея.
Защо да използвам библиотека за манипулиране на дати?
Нативният Date обект на JavaScript е известен със своята сложност. Той има непоследователно поведение в различните браузъри, объркващо индексиране на месеци (0-11 вместо 1-12), ограничени опции за форматиране и липса на вградена поддръжка за часови зони. Библиотеките за дати като Moment.js решават тези проблеми, като предоставят последователен, добре документиран API. Те автоматично обработват специални случаи като преходи на летното часово време, високосни години и форматиране, специфично за локала, спасявайки разработчиците от писането на подложена на грешки логика за работа с дати от нулата.
Описание на инструмента
Moment.js Playground е интерактивна среда, базирана на браузър, за експериментиране с библиотеката Moment.js. Напишете и изпълнете JavaScript код директно в редактора с пълен достъп до Moment.js и Moment Timezone. Playground автоматично изпълнява вашия код, докато пишете (с забавяне) и показва всички console изходи в панел, подобен на терминал, по-долу. Той е идеален за изучаване на Moment.js, тестване на низове за форматиране на дати, отстраняване на грешки при изчисления на дати и прототипиране на логика, свързана с времето, без настройка на среда за разработка.
Примери
Форматиране на текущата дата:
const now = moment();
console.log(now.format("MMMM Do, YYYY"));
// Изход: December 30th, 2025
console.log(now.format("dddd, h:mm A"));
// Изход: Monday, 3:45 PMПарсване на различни формати на дати:
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-индексирано)Изчисляване на относително време:
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 agoАритметика на дати:
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-31Работа с продължителности:
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 yearСравняване на дати:
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")); // trueРабота с часови зони:
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"));Функции
- Пълна библиотека Moment.js: Достъп до всички функции на Moment.js, включително парсване, форматиране, манипулиране и сравняване
- Поддръжка на часови зони: Moment Timezone е предварително зареден за работа с часови зони по целия свят
- Живо изпълнение на код: Кодът се изпълнява автоматично, докато пишете, с интелигентно забавяне
- Вграден терминал: Преглед на console изходи незабавно без отваряне на браузърни dev tools
- Подсветяване на синтаксис: Подсветяване на синтаксис на JavaScript за по-добра четливост на кода
- Обработка на грешки: Грешките по време на изпълнение се показват ясно в изходите на терминала
Случаи на употреба
- Изучаване на Moment.js: Експериментирайте с API и вижте резултатите незабавно без настройка на проект
- Тестване на низове за форматиране: Опитайте различни токени за форматиране, за да постигнете точния изход на дата, който ви трябва
- Отстраняване на грешки при изчисления на дати: Тестирайте сложна аритметика на дати, преди да я внедрите в приложението си
- Преобразувания на часови зони: Бързо преобразувайте времена между различни часови зони
- Поддръжка на наследен код: Тестирайте фрагменти код на Moment.js при поддръжка на съществуващи приложения
Често използвани токени за форматиране
| Токен | Описание | Пример |
|---|---|---|
YYYY |
4-цифрена година | 2025 |
YY |
2-цифрена година | 25 |
MM |
2-цифрен месец | 01-12 |
MMM |
Кратко име на месец | Jan, Feb |
MMMM |
Пълно име на месец | January |
DD |
2-цифрен ден | 01-31 |
Do |
Ден с редност | 1st, 2nd, 3rd |
dddd |
Пълно име на ден | Monday |
ddd |
Кратко име на ден | Mon |
HH |
24-часов час | 00-23 |
hh |
12-часов час | 01-12 |
mm |
Минути | 00-59 |
ss |
Секунди | 00-59 |
A |
AM/PM (главни букви) | AM, PM |
a |
am/pm (малки букви) | am, pm |
z |
Съкращение на зона | EST, PST |
Z |
Отместване на зона | +05:00 |
Справка на често използвани методи
| Метод | Описание | Пример |
|---|---|---|
moment() |
Създаване на текущ момент | moment() |
format(string) |
Форматиране в низ | moment().format("YYYY-MM-DD") |
add(n, unit) |
Добавяне на време | moment().add(7, "days") |
subtract(n, unit) |
Изваждане на време | moment().subtract(1, "month") |
startOf(unit) |
Начало на единица | moment().startOf("week") |
endOf(unit) |
Край на единица | moment().endOf("month") |
fromNow() |
Относително време | moment("2025-01-01").fromNow() |
diff(moment) |
Разлика | momentA.diff(momentB, "days") |
isBefore(moment) |
Е ли преди | momentA.isBefore(momentB) |
isAfter(moment) |
Е ли след | momentA.isAfter(momentB) |
isSame(moment, unit) |
Е ли същото | momentA.isSame(momentB, "month") |
isValid() |
Проверка на валидност | moment("invalid").isValid() |
clone() |
Създаване на копие | moment().clone() |
tz(zone) |
Преобразуване на часова зона | moment().tz("America/New_York") |
Единици за време
Moment.js поддържа тези единици за време за операции add, subtract, startOf, endOf и diff:
years/yquarters/Qmonths/Mweeks/wdays/dhours/hminutes/mseconds/smilliseconds/ms