Hva er Moment.js?

Moment.js er et mye brukt JavaScript‑bibliotek for parsing, validering, manipulering og formatering av datoer. Før moderne alternativer dukket opp, var Moment.js de‑facto‑standard for datohåndtering i JavaScript‑applikasjoner. Biblioteket tilbyr et rent, kjedelig API som gjør arbeid med datoer intuitivt og rett frem. Selv om nyere biblioteker som date-fns og Luxon finnes, er Moment.js fortsatt mye brukt i eldre kodebaser og vedlikeholdes aktivt for feilrettinger. Å forstå Moment.js er viktig for utviklere som jobber med eksisterende prosjekter som er avhengige av det.

Hvorfor bruke et datomanipuleringsbibliotek?

JavaScripts innebygde Date‑objekt er notorisk vanskelig å jobbe med. Det har inkonsistent oppførsel på tvers av nettlesere, forvirrende månedindeksering (0‑11 i stedet for 1‑12), begrensede formateringsalternativer og ingen innebygd støtte for tidssoner. Datobiblioteker som Moment.js løser disse problemene ved å tilby et konsistent, vel dokumentert API. De håndterer kanttilfeller som overgangen til sommertid, skuddår og lokalt spesifikk formatering automatisk, og sparer utviklere for å skrive feilutsatt datologikk fra bunnen av.

Verktøybeskrivelse

Moment.js Playground er et interaktivt nettleser‑basert miljø for å eksperimentere med Moment.js‑biblioteket. Skriv og kjør JavaScript‑kode direkte i editoren med full tilgang til Moment.js og Moment Timezone. Playgrounden kjører automatisk koden din mens du skriver (med debouncing) og viser all konsoll‑output i et terminal‑lignende panel under. Det er perfekt for å lære Moment.js, teste formatstrenger, feilsøke datoberegninger og prototype tidsrelatert logikk uten å sette opp et utviklingsmiljø.

Eksempler

Formater dagens dato:

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

Parse ulike datoformater:

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)

Beregn 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

Dato‑aritmetikk:

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

Arbeid med varigheter:

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

Sammenlign datoer:

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

Arbeid med tidssoner:

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

Funksjoner

  • Fullt Moment.js‑bibliotek: Tilgang til alle Moment.js‑funksjoner inklusiv parsing, formatering, manipulering og sammenligning
  • Støtte for tidssoner: Moment Timezone er forhåndslastet for arbeid med tidssoner over hele verden
  • Live‑kodeutførelse: Kode kjøres automatisk mens du skriver med smart debouncing
  • Innebygd terminal: Vis konsoll‑output umiddelbart uten å åpne nettleser‑dev‑verktøy
  • Syntaksutheving: JavaScript‑syntaksutheving for bedre kode‑lesbarhet
  • Feilhåndtering: Kjøretidsfeil vises tydelig i terminal‑outputen

Brukstilfeller

  • Lære Moment.js: Eksperimenter med API‑et og se resultater umiddelbart uten prosjektoppsett
  • Teste formatstrenger: Prøv ulike format‑tokens for å oppnå nøyaktig dato‑output du trenger
  • Feilsøke datoberegninger: Test kompleks dato‑aritmetikk før du implementerer i applikasjonen din
  • Konvertere tidssoner: Raskt konvertere tider mellom ulike tidssoner
  • Vedlikehold av legacy‑kode: Test Moment.js‑kodesnutter når du vedlikeholder eksisterende applikasjoner

Vanlige format‑tokens

Token Beskrivelse Eksempel
YYYY 4‑sifret år 2025
YY 2‑sifret år 25
MM 2‑sifret måned 01‑12
MMM Kort månedsnavn Jan, Feb
MMMM Fullt månedsnavn January
DD 2‑sifret dag 01‑31
Do Dag med ordinal 1st, 2nd, 3rd
dddd Fullt ukedagsnavn Monday
ddd Kort ukedag Mon
HH 24‑timmers klokke 00‑23
hh 12‑timmers klokke 01‑12
mm Minutter 00‑59
ss Sekunder 00‑59
A AM/PM (stor) AM, PM
a am/pm (liten) am, pm
z Tidssone‑forkortelse EST, PST
Z Tidssone‑forskyvning +05:00

Vanlige metoder – referanse

Metode Beskrivelse Eksempel
moment() Opprett nåværende moment moment()
format(string) Formater til streng moment().format("YYYY-MM-DD")
add(n, unit) Legg til tid moment().add(7, "days")
subtract(n, unit) Trekk fra tid moment().subtract(1, "month")
startOf(unit) Start av enhet moment().startOf("week")
endOf(unit) Slutt av enhet moment().endOf("month")
fromNow() Relativ tid moment("2025-01-01").fromNow()
diff(moment) Differanse momentA.diff(momentB, "days")
isBefore(moment) Er før momentA.isBefore(momentB)
isAfter(moment) Er etter momentA.isAfter(momentB)
isSame(moment, unit) Er lik momentA.isSame(momentB, "month")
isValid() Sjekk gyldighet moment("invalid").isValid()
clone() Lag kopi moment().clone()
tz(zone) Konverter tidssone moment().tz("America/New_York")

Tidsenheter

Moment.js støtter følgende tidsenheter for add, subtract, startOf, endOf og diff‑operasjoner:

  • years / y
  • quarters / Q
  • months / M
  • weeks / w
  • days / d
  • hours / h
  • minutes / m
  • seconds / s
  • milliseconds / ms