Hopp til innhold
NorscodeNorscode

std.dato

ReferanseAv Norscode-prosjektet

std.dato regner med kalenderdatoer som heltall — en ordinal som teller dager. Uten tidssone og klokkeslett slipper du feilene som ellers kommer av sommertid og soner.

std.dato regner med kalenderdatoer på en måte som unngår de vanligste feilene. En dato er ganske enkelt et heltall — en ordinal som teller dager — og fordi det ikke er noen tidssone eller klokkeslett involvert, slipper du feilene som ellers kommer av sommertid og ulike soner.

Modulen konverterer mellom ordinaler og år/måned/dag og ISO-format, legger til og trekker fra dager, måneder og år, sammenligner to datoer, og svarer på kalenderspørsmål som ukedag, ukenummer, kvartal og om en dag er helg. Alt uttrykt som vanlig regning med heltall.

Når bruker du den

Bruk std.dato til alt som handler om kalenderdatoer: regne ut forfall, finne neste hverdag, telle dager mellom to hendelser, eller vise en dato pent. Ved å bruke ordinaler slipper du feilene som kommer av tidssoner og sommertid.

Slik kommer du i gang

bruk std.dato som dato

funksjon start() -> heiltall {
    la i_dag = dato.frå_ymd(2026, 8, 30)
    la forfall = dato.pluss_dagar(i_dag, 14)   // to uker fram
    skriv(dato.til_iso(forfall))                // "2026-09-13"
    skriv(dato.veekedag_namn(forfall))
    returner 0
}

Fordi datoer er heltall, er «to uker fram» bare en addisjon. til_iso og veekedag_namn gjør ordinalen lesbar igjen.

Funksjonene

Konvertere

Datoer lever som ordinaler internt, men du vil lese og skrive dem som år/måned/dag eller ISO-tekst. Disse funksjonene går begge veier: frå_ymd og frå_iso inn til ordinal, til_ymd, til_iso og til_lang_format ut igjen.

  • frå_ymd(år: heltall, månad: heltall, dag: heltall) -> heltall — Lager en ordinal fra år, måned og dag.
  • til_ymd(ordinal: heltall) -> liste_heltall — Gjør en ordinal om til [år, måned, dag].
  • frå_ordinal(ordinal: heltall) -> liste_heltall — Gjør en ordinal om til [år, måned, dag].
  • til_ordinal(år: heltall, månad: heltall, dag: heltall) -> heltall — Gjør år, måned og dag om til en ordinal (dagteller).
  • frå_iso(s: tekst) -> heltall — Tolker en ISO-dato (ÅÅÅÅ-MM-DD) og gir en ordinal.
  • til_iso(ordinal: heltall) -> tekst — Formaterer en ordinal som ISO-dato.
  • til_lang_format(ordinal: heltall) -> tekst — Formaterer datoen på et langt, lesbart norsk format.

Regne

Fordi en dato er et heltall, er regning enkelt. Legg til eller trekk fra dager, måneder og år, tell dagene mellom to datoer, eller få hele lista av datoer i et intervall — med kvardagar_mellom som bare tar med hverdagene.

  • pluss_dagar(ordinal: heltall, dagar: heltall) -> heltall — Gir datoen et gitt antall dager senere.
  • minus_dagar(ordinal: heltall, dagar: heltall) -> heltall — Gir datoen et gitt antall dager tidligere.
  • pluss_månader(ordinal: heltall, månader: heltall) -> heltall — Gir datoen et gitt antall måneder senere.
  • pluss_år(ordinal: heltall, år: heltall) -> heltall — Gir datoen et gitt antall år senere.
  • dagar_mellom(frå: heltall, mål: heltall) -> heltall — Antall dager mellom to datoer.
  • datoar_mellom(frå: heltall, mål: heltall) -> liste_heltall — En liste med alle datoene mellom to datoer.
  • kvardagar_mellom(frå: heltall, mål: heltall) -> liste_heltall — En liste med bare hverdagene mellom to datoer.

Sammenligne

Tre små funksjoner for å avgjøre rekkefølge: er a før, etter eller samme dag som b.

  • er_før(a: heltall, b: heltall) -> bool — Sann hvis a er før b.
  • er_etter(a: heltall, b: heltall) -> bool — Sann hvis a er etter b.
  • er_lik_dato(a: heltall, b: heltall) -> bool — Sann hvis de to datoene er samme dag.

Kalenderinfo

Alt du kan spørre kalenderen om: ukedag og ukenummer, om det er helg, hvilket kvartal, dag i året, første og siste dag i måneden, og om året er skuddår.

  • veekedag(ordinal: heltall) -> heltall — Ukedagen som tall.
  • veekedag_namn(ordinal: heltall) -> tekst — Ukedagens navn.
  • er_helg(ordinal: heltall) -> bool — Sann hvis datoen faller på en lørdag eller søndag.
  • er_kvardag(ordinal: heltall) -> bool — Sann hvis datoen er en hverdag.
  • månadsnamn(månad: heltall) -> tekst — Navnet på måneden.
  • veeke_nummer(ordinal: heltall) -> heltall — Ukenummeret datoen faller i.
  • kvartal(ordinal: heltall) -> heltall — Kvartalet (1–4) datoen faller i.
  • dag_i_år(ordinal: heltall) -> heltall — Hvilken dag i året datoen er (1–366).
  • første_i_månaden(ordinal: heltall) -> heltall — Ordinalen for den første dagen i samme måned.
  • siste_i_månaden(ordinal: heltall) -> heltall — Ordinalen for den siste dagen i samme måned.
  • er_skotår(år: heltall) -> bool — Sann hvis året er skuddår.
  • dagar_i_år(år: heltall) -> heltall — Antall dager i året (365 eller 366).
  • dagar_i_månad(år: heltall, månad: heltall) -> heltall — Antall dager i den gitte måneden.

Godt å vite

  • En «ordinal» er bare et heltall som teller dager, så du kan sammenligne to datoer med vanlige operatorer eller er_før/er_etter.
  • Modulen håndterer kalenderdatoer, ikke klokkeslett og tidssoner — nettopp derfor slipper du en hel klasse feil.
  • dagar_mellom og datoar_mellom er nyttige for å regne ut perioder, for eksempel antall virkedager til en frist.

std.dato er én av modulene i standardbiblioteket. Alt følger med kjøretiden — ingen installasjon, ingen eksterne avhengigheter. Se også Dokumentasjon for språket og kjøretiden.

Les også

Tilbake til oversikten