Vad är Moment.js?

Moment.js är ett allmänt använt JavaScript‑bibliotek för att pars​a, validera, manipulera och formatera datum. Innan moderna alternativ dök upp var Moment.js de‑facto‑standard för datumhantering i JavaScript‑applikationer. Det erbjuder ett rent, kedjebart API som gör datumarbete intuitivt och enkelt. Även om nyare bibliotek som date-fns och Luxon finns kvar, är Moment.js fortfarande kraftigt använt i äldre kodbaser och underhålls aktivt för bug‑fixar. Att förstå Moment.js är viktigt för utvecklare som arbetar med befintliga projekt som förlitar sig på det.

Varför använda ett datummanipuleringsbibliotek?

JavaScripts inbyggda Date‑objekt är notoriskt svårt att arbeta med. Det har inkonsekvent beteende mellan olika webbläsare, förvirrande månadindexering (0‑11 istället för 1‑12), begränsade formateringsalternativ och inget inbyggt stöd för tidszoner. Datumbibliotek som Moment.js löser dessa problem genom att erbjuda ett konsekvent, väl‑dokumenterat API. De hanterar kantfall som övergångar till sommartid, skottår och localespecifik formatering automatiskt, vilket sparar utvecklare från att skriva felbenägen datumlogik från grunden.

Verktygsbeskrivning

Moment.js Playground är en interaktiv webbläsarbaserad miljö för att experimentera med Moment.js‑biblioteket. Skriv och kör JavaScript‑kod direkt i editorn med full åtkomst till Moment.js och Moment Timezone. Playground‑miljön kör automatiskt din kod medan du skriver (med debouncing) och visar all konsolutdata i en terminal‑liknande panel nedanför. Den är perfekt för att lära sig Moment.js, testa datumformateringssträngar, felsöka datumberäkningar och prototypa tidsrelaterad logik utan att sätta upp en utvecklingsmiljö.

Exempel

Formatera aktuellt datum:

const now = moment();
console.log(now.format("MMMM Do, YYYY"));
// Output: December 30th, 2025

console.log(now.format("dddd, h:mm A"));
// Output: Monday, 3:45 PM

Parsa olika datumformat:

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)

Beräkna relativ tid:

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

Datumaritmetik:

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

Arbeta med varaktigheter:

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

Jämför datum:

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

Arbeta med tidszoner:

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"));

Funktioner

  • Fullständigt Moment.js‑bibliotek: Tillgång till alla Moment.js‑funktioner inklusive parsning, formatering, manipulation och jämförelse
  • Stöd för tidszoner: Moment Timezone är förladdat för arbete med tidszoner världen över
  • Live‑kodexekvering: Koden körs automatiskt medan du skriver med smart debouncing
  • Inbyggd terminal: Visa konsolutdata omedelbart utan att öppna webbläsarens utvecklingsverktyg
  • Syntax‑markering: JavaScript‑syntaxmarkering för bättre kodläsbarhet
  • Felhantering: Runtime‑fel visas tydligt i terminalutdata

Användningsområden

  • Lära sig Moment.js: Experimentera med API‑et och se resultat omedelbart utan projektuppsättning
  • Testa formatsträngar: Prova olika format‑token för att uppnå exakt datumoutput du behöver
  • Felsökning av datumberäkningar: Testa komplex datumaritmetik innan implementering i din applikation
  • Tidszonskonverteringar: Snabbt konvertera tider mellan olika tidszoner
  • Underhåll av äldre kod: Testa Moment.js‑kodsnuttar när du underhåller befintliga applikationer

Vanliga format‑token

Token Beskrivning Exempel
YYYY 4‑siffrigt år 2025
YY 2‑siffrigt år 25
MM 2‑siffrig månad 01-12
MMM Kort månadsnamn Jan, Feb
MMMM Fullständigt månadsnamn January
DD 2‑siffrig dag 01-31
Do Dag med ordinal 1st, 2nd, 3rd
dddd Full veckodagsnamn Monday
ddd Kort veckodagsnamn Mon
HH 24‑timmars timme 00-23
hh 12‑timmars timme 01-12
mm Minuter 00-59
ss Sekunder 00-59
A AM/PM (versaler) AM, PM
a am/pm (gemener) am, pm
z Tidszonsförkortning EST, PST
Z Tidszonsförskjutning +05:00

Vanliga metodreferenser

Metod Beskrivning Exempel
moment() Skapa nuvarande moment moment()
format(string) Formatera till sträng moment().format("YYYY-MM-DD")
add(n, unit) Lägg till tid moment().add(7, "days")
subtract(n, unit) Subtrahera tid moment().subtract(1, "month")
startOf(unit) Start på enhet moment().startOf("week")
endOf(unit) Slut på enhet moment().endOf("month")
fromNow() Relativ tid moment("2025-01-01").fromNow()
diff(moment) Skillnad momentA.diff(momentB, "days")
isBefore(moment) Är före momentA.isBefore(momentB)
isAfter(moment) Är efter momentA.isAfter(momentB)
isSame(moment, unit) Är samma momentA.isSame(momentB, "month")
isValid() Kontrollera giltighet moment("invalid").isValid()
clone() Skapa kopia moment().clone()
tz(zone) Konvertera tidszon moment().tz("America/New_York")

Tidsenheter

Moment.js stödjer följande tidsenheter för add, subtract, startOf, endOf och diff‑operationer:

  • years / y – år
  • quarters / Q – kvartal
  • months / M – månader
  • weeks / w – veckor
  • days / d – dagar
  • hours / h – timmar
  • minutes / m – minuter
  • seconds / s – sekunder
  • milliseconds / ms – millisekunder