Moment.js: Комплетно објашњење и практични примери библиотеке датума

Последње ажурирање: Јул КСНУМКС КСНУМКС
  • 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-у.

  Програмски језик ниског нивоа: 7 кључева за мајсторство

Кључне карактеристике и предности 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: дан у месецу
  • hh o HHвреме (12-часовни или 24-часовни формат)
  • mm: минути
  • ss: секунди
  • a: пре подне/по подне
  Програмски језик Rust: перформансе, безбедност и екосистем

На пример, да бисте приказали само време:

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() вам директно даје одговор.

  10 типова података у Питхон-у

Напредно прилагођавање: формати, токени и строго парсирање

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), мм (минути), сс (секунде)
  • Временска зонаЗ, ЗЗ

Ови токени се могу комбиновати да би се креирали потпуно прилагођени излази. Погледајте документацију за комплетну листу и посебне случајеве.