Moment.js: Kompletní vysvětlení a praktické příklady knihovny dat

Poslední aktualizace: Července 28 2025
  • Moment.js zjednodušuje správu data a času v JavaScriptu pomocí čistého a výkonného API.
  • Umožňuje analyzovat, manipulovat, ověřovat a zobrazovat data v libovolném formátu a časovém pásmu.
  • Snadno se integruje do projektů a je kompatibilní s externími pluginy a knihovnami, jako je IronPDF.

moment.js

Práce s daty a časy v JavaScriptu může být pro webové vývojáře skutečnou výzvou . Naštěstí nástroje jako Moment.js tento proces výrazně zjednodušují a usnadňují vše od základního formátování data až po složité manipulační a ověřovací operace. Pokud jste se někdy cítili frustrovaní při snaze o správný převod, porovnání nebo zobrazení dat ve vašich projektech, Moment.js byl pravděpodobně jedním z vašich nejlepších přátel, nebo byste alespoň měli zvážit jeho použití.

V tomto článku vám řeknu vše, co potřebujete vědět o knihovně Moment.js : od jejích hlavních funkcí a méně známých triků, přes praktické příklady a integraci s dalšími knihovnami, včetně jasného vysvětlení její syntaxe a úkolů, které s ní můžete vykonávat. Podíváme se také na její omezení, nedávné aktualizace a alternativy, které máte k dispozici, pokud hledáte něco modernějšího.

Co je Moment.js a proč se stal tak populárním?

Moment.js je JavaScriptová knihovna navržená pro snadnou práci s daty a časy . Umožňuje vytvářet, analyzovat, manipulovat a zobrazovat data prakticky v jakémkoli myslitelném formátu s jednoduchou, ale výkonnou syntaxí. Tato knihovna je již léta primárním řešením komunity pro překonávání omezení nativního objektu Date() v JavaScriptu.

Jádro knihovny Moment.js se točí kolem objektu `moment()` , který dokáže konstruovat data z téměř jakéhokoli platného vstupu: textových řetězců, objektů Date, časových razítek nebo přímo s číselnými argumenty. Díky tomu je knihovna extrémně flexibilní a užitečná ve všech typech projektů, od malých skriptů až po podnikové aplikace, které spravují mezinárodní časová pásma nebo historické záznamy.

Co ho učinilo tak úspěšným? Jeho spolehlivost, snadné použití a rozmanitost doprovodných nástrojů a pluginů . I když projekt přešel do režimu údržby, Moment.js si udržuje velkou uživatelskou základnu a rozsáhlou dokumentaci , což posiluje jeho pozici předního datového řešení v JavaScriptu a Node.js.

  Kompletní průvodce frameworky pro open source agenty s umělou inteligencí

Klíčové vlastnosti a výhody Moment.js

  • Jednoduché a intuitivní APIJednou z největších silných stránek Moment.js je jeho jasná syntaxe. Můžete provádět jednoduché operace, jako je získání aktuálního data nebo převod řetězce do určitého formátu, nebo složité výpočty a validace v pouhých několika řádcích.
  • Flexibilní parsování a formátováníAnalýza datových řetězců téměř jakéhokoli formátu a jejich převod na požadovaný výstup nebyla nikdy snazší. Moment.js umožňuje rychlé a bezproblémové formátování dat ve vlastních prezentacích..
  • Manipulace s datyPřidávání nebo odčítání dnů, měsíců, let, týdnů nebo jakékoli jiné časové jednotky je stejně jednoduché jako použití metod přidat() y odčítat()To je velmi užitečné, když potřebujete pracovat s relativními daty, termíny nebo časovými rámci, které se dynamicky mění.
  • Robustní validacePokud potřebujete zkontrolovat, zda je datum platné nebo existuje (například 30. února), Moment.js vám to usnadní. Metoda je platná() Dokáže detekovat jemné chyby ve formátu nebo logice dat.
  • Podpora časových pásem a lokalizaceDíky vašemu pluginu moment-timezonePřevod dat mezi různými časovými pásmy je velmi snadný. Můžete také zobrazit data přizpůsobená jazyku uživatele a regionálním konvencím, což je klíčové v globálních aplikacích.
  • Ekosystém pluginůKromě hlavní knihovny existuje ekosystém pluginů pro rozšíření její funkcionality (kalendář, kompatibilita s jinými frameworky, exotické formáty...).

Jak začít s Moment.js ve vašem projektu

Instalace je velmi jednoduchá . Moment.js můžete do HTML kódu vložit jediným řádkem:

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

Pokud pracujete s Node.js nebo moderním vývojovým prostředím, je běžné jej instalovat pomocí npm nebo yarn:

npm install moment

Jakmile to uděláte, můžete importovat Moment.js podle použité syntaxe:

// Versión CommonJS
var moment = require('moment');
moment().format();

// ES6
import moment from 'moment';
moment().format();

Vytváření dat: různé způsoby a praktické příklady

Snadno si vytvářejte data

Chcete-li získat aktuální datum a čas, jednoduše použijte moment():

console.log(moment()); // Devuelve la fecha actual en formato ISO8601

Konkrétní datum můžete vytvořit předáním argumentů:

moment("2022-10-14"); // Crea el 14 de octubre de 2022

Můžete také začít od daného řetězce a formátu, a to i v striktním režimu:

moment("25/12/1995", "DD/MM/YYYY", true); // Analiza y comprueba el formato

Máte nativní objekt Date?

const fechaJS = new Date();
const miFecha = moment(fechaJS);

Formátování a zobrazení dat

Moment.js umožňuje zobrazit data v libovolném představitelném formátu . Například pro zobrazení aktuálního data jako den/měsíc/rok:

moment().format('DD/MM/YYYY');

Pokud chcete humanizovanější řetězec, můžete použít:

moment().format('MMMM Do YYYY, h:mm:ss a'); // Ejemplo: "marzo 8º 2024, 3:21:10 pm"

Některé užitečné tokeny pro formátování :

  • YYYY: 4místný rok
  • MM: můj
  • DDden v měsíci
  • hh o HHčas (12hodinový nebo 24hodinový formát)
  • mmminut
  • sssekundy
  • adopoledne/odpoledne
  Vše o metaprogramování: praktické příklady a použití

Například pro zobrazení pouze času:

moment().format('HH:mm:ss');

Pokročilé formátování s tokeny a regionální podporou

Moment.js podporuje více lokalizovaných formátů a překladů . Je možné přepínat jazyky za chodu a zobrazovat názvy měsíců a dnů v jiném jazyce.

moment.locale('es'); // Cambia a español
document.write(moment().format('LLLL'));
// Ejemplo: martes, 8 de marzo de 2024 15:21

Manipulace s daty: sčítání, odčítání a porovnávání

Práce s relativními daty je jednou ze silných stránek Moment.js.

  • Přidejte dny, měsíce nebo roky:
    moment().add(3, 'days').format('DD/MM/YYYY');
  • Odečíst jednotky:
    moment().subtract(2, 'months').format('DD/MM/YYYY');
  • Začátek a konec menstruace:
    moment().startOf('month').format('DD/MM/YYYY'); // Primer día del mes
    moment().endOf('month').format('DD/MM/YYYY');   // Último día del mes

Ověřování dat a odhalování chyb

Před prací s daty je nezbytné ověřit, zda jsou správná:

moment('2024-02-30', 'YYYY-MM-DD').isValid(); // false, el 30 de febrero no existe

Tím se zabrání neočekávaným chybám v aplikacích, které přijímají data od uživatele.

Porovnání dat: kontrola, zda se datum nachází mezi ostatními

Moment.js obsahuje několik metod pro porovnávání dat:

  • jePřed()Zkontroluje, zda jedno datum předchází jinému.
  • jePo()Zkontroluje, zda je datum pozdější.
  • jeMezi()Označuje, zda se datum nachází mezi dvěma zadanými daty.
let hoy = moment();
let ayer = moment().subtract(1, 'days');
console.log(hoy.isAfter(ayer)); // true

Zpracování časových pásem a mezinárodních dat

Při práci s uživateli v různých částech světa mohou být časová pásma skutečným problémem . S pluginem moment-timezone můžete snadno převádět data mezi regiony.

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"

Kromě toho je Moment.js schopen zobrazovat data přizpůsobená regionálnímu nastavení uživatele a zobrazovat správně přeložené názvy měsíců a dnů.

Klíčové příklady použití a pokročilé tipy

Získání rozdílů mezi daty

Čas uplynulý mezi dvěma daty můžete vypočítat v různých jednotkách:

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

Relativní data a lidské časy

Moment.js je skvělý pro zobrazování zpráv jako „před 3 dny“ nebo „za 5 hodin“:

moment().subtract(3, 'days').fromNow(); // "hace 3 días"
moment().add(2, 'hours').fromNow();    // "en 2 horas"

Lidský kalendář

Funkce calendar () zobrazuje relativní data, například „včera v 17:00“ nebo „zítra v 9:00“, což ji činí velmi užitečnou pro kalendářové aplikace.

moment().subtract(1, 'days').calendar(); // "Ayer a las..."
moment().add(3, 'days').calendar();     // "Próximo martes a las..."

Podpora pro přechody do roku a zvláštní dny

Chcete vědět, jestli je rok přestupný?

moment([2024]).isLeapYear(); // true

Metoda isLeapYear() vám dá přímou odpověď.

  Lodash: Co to je, jeho výhody a základní funkce v JavaScriptu

Pokročilé přizpůsobení: formáty, tokeny a striktní parsování

Moment.js umožňuje pracovat s vlastními řetězci a tokeny pro vytváření nebo čtení dat v nesčetných formátech . Strict mode navíc vyžaduje přesné shody, čímž zabraňuje drobným chybám a nechtěným překvapením.

Například pro analýzu data ve formátu „den/měsíc/rok“:

moment('12/03/2023', 'DD/MM/YYYY', true);

Seznam běžných tokenů a příklady

  • RokRRRR (2024), RR (24), RR (-500)
  • Měsíc: MM (01 – 12), MMM (leden), MMMM (leden)
  • Día: DD (01 – 31), C (1. – 31.)
  • HoraHH (00–23), hh (01–12), mm (minuty), ss (sekundy)
  • Časové pásmoZ, ZZ

Tyto tokeny lze kombinovat a vytvářet tak zcela přizpůsobené výstupy. Úplný seznam a speciální případy naleznete v dokumentaci.