- Moment.js поједностављује управљање датумом и временом у JavaScript-у помоћу чистог и моћног API-ја.
- Омогућава вам да анализирате, манипулишете, валидирате и приказујете датуме у било ком формату и временској зони.
- Лако се интегрише у пројекте и компатибилан је са спољним додацима и библиотекама као што је IronPDF.

Рад са датумима и временима у Јаваскрипту може бити прави изазов за веб програмере . Срећом, алати попут Moment.js значајно поједностављују овај процес, чинећи све, од основног форматирања датума до сложених операција манипулације и валидације, много лакшим. Ако сте се икада осећали фрустрирано покушавајући да конвертујете, упоредите или правилно прикажете датуме у својим пројектима, Moment.js је вероватно био један од ваших најбољих пријатеља, или би бар требало да размислите о његовом коришћењу.
У овом чланку ћу вам рећи све што треба да знате о Moment.js -у: од његових главних функција и мање познатих трикова, до практичних примера и његове интеграције са другим библиотекама, укључујући јасно објашњење његове синтаксе и задатака које можете да обавите помоћу њега. Такође ћемо погледати његова ограничења, недавна ажурирања и које алтернативе имате ако тражите нешто модерније.
Шта је Moment.js и зашто је постао толико популаран?
Moment.js је JavaScript библиотека дизајнирана да олакша рад са датумима и временима . Омогућава вам да креирате, анализирате, манипулишете и приказујете датуме у практично било ком замисливом формату, користећи једноставну, али моћну синтаксу. Годинама је ова библиотека била примарно решење заједнице за превазилажење ограничења JavaScript-овог изворног објекта Date().
Језгро Moment.js-а се врти око објекта `moment()` , који може да конструише датуме из скоро сваког валидног уноса: текстуалних низова, објеката Date, временских ознака или директно помоћу нумеричких аргумената. Ово га чини изузетно флексибилним и корисним у свим врстама пројеката, од малих скрипти до пословних апликација које управљају међународним временским зонама или историјским записима.
Шта га је учинило тако успешним? Његова поузданост, једноставност коришћења и разноликост пратећих алата и додатака . Чак и када је пројекат ушао у режим одржавања, Moment.js одржава велику базу корисника и обимну документацију , учвршћујући своју позицију водећег решења за податке у JavaScript-у и Node.js-у.
Кључне карактеристике и предности Moment.js-а
- Једноставан и интуитиван APIЈедна од највећих предности Moment.js-а је његова јасна синтакса. Можете изводити једноставне операције, као што је добијање тренутног датума или претварање стринга у одређени формат, или сложене прорачуне и валидације у само неколико редова.
- Флексибилно парсирање и форматирањеРашчлањивање низова датума готово било ког формата и њихово претварање у жељени излаз никада није било лакше. Moment.js омогућава брзо и једноставно форматирање датума у прилагођеним презентацијама..
- Манипулација датумимаДодавање или одузимање дана, месеци, година, недеља или било које друге јединице времена једноставно је као коришћење метода додати() y одузимање()Ово је веома корисно када треба да радите са релативним датумима, роковима или временским оквирима који се динамички мењају.
- Робусна валидацијаАко треба да проверите да ли је датум важећи или постоји (на пример, 30. фебруар), Moment.js вам то олакшава. Метода је важећа() У стању је да открије суптилне грешке у формату или логици датума.
- Подршка за временске зоне и локализацијуЗахваљујући вашем додатку тренутак-временска зонаВеома је лако конвертовати датуме између различитих временских зона. Такође можете приказати датуме прилагођене језику корисника и регионалним конвенцијама, што је кључно у глобалним апликацијама.
- Екосистем додатакаПоред главне библиотеке, постоји екосистем додатака за проширење њене функционалности (календар, компатибилност са другим оквирима, егзотични формати...).
Како почети са Moment.js у вашем пројекту
Инсталација је веома једноставна . Можете укључити Moment.js у свој HTML једним редом:
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
Ако радите са Node.js или модерним развојним окружењем, уобичајено је да га инсталирате помоћу npm-а или yarn-а:
npm install moment
Када се ово уради, можете увести Moment.js према синтакси коју користите:
// Versión CommonJS
var moment = require('moment');
moment().format();
// ES6
import moment from 'moment';
moment().format();
Креирање датума: различити начини и практични примери
Лако креирајте датуме
Да бисте добили тренутни датум и време, једноставно користите moment():
console.log(moment()); // Devuelve la fecha actual en formato ISO8601
Можете конструисати одређени датум прослеђивањем аргумената:
moment("2022-10-14"); // Crea el 14 de octubre de 2022
Такође можете почети од датог низа и формата, чак и у строгом режиму:
moment("25/12/1995", "DD/MM/YYYY", true); // Analiza y comprueba el formato
Да ли имате изворни објекат Date?
const fechaJS = new Date();
const miFecha = moment(fechaJS);
Форматирање и приказивање датума
Moment.js вам омогућава да прикажете датуме у било ком замисливом формату . На пример, да бисте приказали тренутни датум као дан/месец/година:
moment().format('DD/MM/YYYY');
Ако желите хуманији ланац, можете користити:
moment().format('MMMM Do YYYY, h:mm:ss a'); // Ejemplo: "marzo 8º 2024, 3:21:10 pm"
Неки корисни токени за форматирање :
YYYY: четвороцифрена годинаMM: мојDD: дан у месецуhhoHHвреме (12-часовни или 24-часовни формат)mm: минутиss: секундиa: пре подне/по подне
На пример, да бисте приказали само време:
moment().format('HH:mm:ss');
Напредно форматирање са токенима и регионалном подршком
Moment.js подржава више локализованих формата и превода . Могуће је мењати језике у ходу да би се имена месеци и дана приказивала на другом језику.
moment.locale('es'); // Cambia a español
document.write(moment().format('LLLL'));
// Ejemplo: martes, 8 de marzo de 2024 15:21
Манипулација датумима: сабирање, одузимање и поређење
Рад са релативним датумима је једна од предности Moment.js-а.
- Додајте дане, месеце или године:
moment().add(3, 'days').format('DD/MM/YYYY'); - Одузми јединице:
moment().subtract(2, 'months').format('DD/MM/YYYY'); - Почетак и крај менструације:
moment().startOf('month').format('DD/MM/YYYY'); // Primer día del mes moment().endOf('month').format('DD/MM/YYYY'); // Último día del mes
Потврдите датуме и откријте грешке
Пре него што се почне са радом са датумима, важно је проверити да ли су тачни:
moment('2024-02-30', 'YYYY-MM-DD').isValid(); // false, el 30 de febrero no existe
Ово спречава неочекиване грешке у апликацијама које примају датуме од корисника.
Поређење датума: проверите да ли је датум међу осталима
Moment.js укључује неколико метода за поређење датума:
- јеПре()Проверава да ли један датум претходи другом.
- јеАфтер()Проверава да ли је датум каснији.
- јеИзмеђу(): Означава да ли се датум налази између два дата датума.
let hoy = moment();
let ayer = moment().subtract(1, 'days');
console.log(hoy.isAfter(ayer)); // true
Руковање временским зонама и међународним датумима
Када радите са корисницима у различитим деловима света, временске зоне могу бити права главобоља . Помоћу додатка moment-timezone можете лако конвертовати датуме између региона.
const moment = require('moment-timezone');
const fechaUTC = moment('2024-05-25');
const fechaNY = fechaUTC.tz('America/New_York').format('YYYY-MM-DD HH:mm:ss');
console.log(fechaNY);
// Ejemplo: "2024-05-24 20:00:00"
Поред тога, Moment.js је у стању да прикаже датуме прилагођене регионалним подешавањима корисника , приказујући исправно преведена имена месеци и дана.
Кључни примери употребе и напредни савети
Пронађите разлике између датума
Можете израчунати време протекло између два датума у различитим јединицама:
let inicio = moment('2024-01-01');
let fin = moment('2024-03-08');
let dias = fin.diff(inicio, 'days'); // Devuelve el número de días entre ambas
Релативни датуми и људска времена
Moment.js је одличан за приказивање порука попут „пре 3 дана“ или „за 5 сати“:
moment().subtract(3, 'days').fromNow(); // "hace 3 días"
moment().add(2, 'hours').fromNow(); // "en 2 horas"
Људски календар
Функција calendar () приказује релативне датуме као што су „јуче у 17:00“, „сутра у 9:00“, што је чини веома корисном за апликације календара.
moment().subtract(1, 'days').calendar(); // "Ayer a las..."
moment().add(3, 'days').calendar(); // "Próximo martes a las..."
Подршка за годишње скокове и посебне дане
Да ли желите да знате да ли је година преступна?
moment([2024]).isLeapYear(); // true
Метода isLeapYear() вам директно даје одговор.
Напредно прилагођавање: формати, токени и строго парсирање
Moment.js вам омогућава рад са прилагођеним стринговима и токенима за креирање или читање датума у безброј формата . Штавише, строги режим захтева тачна подударања, спречавајући суптилне грешке и нежељена изненађења.
На пример, да бисте анализирали датум у формату „дан/месец/година“:
moment('12/03/2023', 'DD/MM/YYYY', true);
Листа уобичајених токена и примери
- ГодинаГГГГ (2024), ГГ (24), Г (-500)
- Месец: MM (01 – 12), MMM (јан), MMMM (јануар)
- Диа: ДД (01 – 31), Ц (1. – 31.)
- Време: ХХ (00 – 23), хх (01 – 12), мм (минути), сс (секунде)
- Временска зонаЗ, ЗЗ
Ови токени се могу комбиновати да би се креирали потпуно прилагођени излази. Погледајте документацију за комплетну листу и посебне случајеве.