Der er generelt 3 typer JavaScript-datoinputformater:
"2015-03-25" (den internationale standard)
"25/03/2015"
"25. marts 2015" eller "25. marts 2015"
ISO-formatet følger en streng standard i JavaScript.
Det er de andre formater ikke så veldefineret og kan være browserspecifik.
Uafhængigt af inputformat vil JavaScript (som standard) udlæse datoer i fuld udstrækning tekststrengformat:
ISO 8601 er den internationale standard for repræsentation af datoer og gange.
ISO 8601-syntaksen (ÅÅÅÅ-MM-DD) er også det foretrukne JavaScript-datoformat:
const d = new Date("2015-03-25");
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p id="demo"></p>
<script>
const d = new Date("2015-03-25");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Den beregnede dato vil være i forhold til din tidszone.
Afhængigt af din tidszone vil resultatet ovenfor vil variere mellem 24. marts og 25. marts.
ISO-datoer kan skrives uden at angive dagen (ÅÅÅÅ-MM):
const d = new Date("2015-03");
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p id="demo"></p>
<script>
const d = new Date("2015-03");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Tidszoner vil variere resultatet ovenfor mellem 28. februar og 1. marts.
ISO-datoer kan skrives uden måned og dag (ÅÅÅÅ):
const d = new Date("2015");
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p id="demo"></p>
<script>
const d = new Date("2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Tidszoner vil variere resultatet ovenfor mellem 31. december 2014 og 1. januar 2015.
ISO-datoer kan skrives med tilføjede timer, minutter og sekunder (ÅÅÅÅ-MM-DDTHH:MM:SSZ):
const d = new Date("2015-03-25T12:00:00Z");
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p>Separate date and time with a capital T.</p>
<p>Indicate UTC time with a capital Z.</p>
<p id="demo"></p>
<script>
const d = new Date("2015-03-25T12:00:00Z");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Dato og klokkeslæt er adskilt med stort T.
UTC-tid er defineret med stort Z.
Hvis du vil ændre tiden i forhold til UTC, skal du fjerne Z og tilføje +TT:MM eller -TT:MM i stedet:
const d = new Date("2015-03-25T12:00:00-06:30");
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p>Modify the time relative to UTC by adding +HH:MM or subtraction -HH:MM to the time.</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML =
new Date("2015-03-25T12:00:00-06:00");
</script>
</body>
</html>
UTC (Universal Time Coordinated) er det samme som GMT (Greenwich Mean Time).
Udeladelse af T eller Z i en dato-tid-streng kan give forskellige resultater i forskellige browsere.
Når du indstiller en dato, uden at angive tidszonen, vil JavaScript bruge browserens tidszone.
Når du får en dato, uden at angive tidszonen, er resultatet konverteret til browserens tidszone.
Med andre ord: Hvis en dato/tid oprettes i GMT (Greenwich Mean Time), dato/tid vil blive konverteret til CDT (Central US Daylight Time), hvis en bruger browser fra det centrale USA.
Korte datoer skrives med en "MM/DD/ÅÅÅÅ" syntaks som denne:
const d = new Date("03/25/2015");
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("03/25/2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
I nogle browsere kan måneder eller dage uden indledende nuller give en fejl:
const d = new Date("2015-3-25");
Opførselen af "ÅÅÅÅ/MM/DD" er udefineret.
Nogle browsere vil prøv at gætte formatet. Nogle vil returnere NaN.
const d = new Date("2015/03/25");
Opførselen af "DD-MM-ÅÅÅÅ" er også udefineret.
Nogle browsere vil prøv at gætte formatet. Nogle vil returnere NaN.
const d = new Date("25-03-2015");
Lange datoer skrives oftest med en "MMM DD ÅÅÅÅ" syntaks som denne:
const d = new Date("Mar 25 2015");
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("Mar 25 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Måned og dag kan være i vilkårlig rækkefølge:
const d = new Date("25 Mar 2015");
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("25 Mar 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Og måned kan skrives fuldt ud (januar) eller forkortet (januar):
const d = new Date("January 25 2015");
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("January 25 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
const d = new Date("Jan 25 2015");
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("Jan 25 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Kommaer ignoreres. Navne skelner mellem store og små bogstaver:
const d = new Date("JANUARY, 25, 2015");
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("JANUARY, 25, 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
Hvis du har en gyldig datostreng, kan du bruge Date.parse()
metode til at konvertere den til millisekunder.
Date.parse()
returnerer antallet af millisekunder mellem datoen og januar 1, 1970:
let msec = Date.parse("March 21, 2012");
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Date.parse()</h2>
<p>Date.parse() returns the number of milliseconds between the date and January 1, 1970:</p>
<p id="demo"></p>
<script>
const msec = Date.parse("March 21, 2012");
document.getElementById("demo").innerHTML = msec;
</script>
</body>
</html>
Du kan derefter bruge antallet af millisekunder til at konvertere det til et dato-objekt:
let msec = Date.parse("March 21, 2012");
const d = new Date(msec);
Prøv det selv →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Date.parse()</h2>
<p>Date.parse(string) returns milliseconds.</p>
<p>You can use the return value to convert the string to a date object:</p>
<p id="demo"></p>
<script>
let msec = Date.parse("March 21, 2012");
const d = new Date(msec);
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
For en komplet Datoreference, gå til vores:
Komplet JavaScript-datoreference.
Referencen indeholder beskrivelser og eksempler på alle Dato-egenskaber og metoder.