---
title: "Göra om textsträng till datum"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/53546-göra-om-textsträng-till-datum"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "i-or"
published: "2002-09-17T16:04:46.000Z"
updated: "2002-09-17T19:48:13.000Z"
replies: 7
views: 271
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/53546-göra-om-textsträng-till-datum"
---

# Göra om textsträng till datum

## #1 — i-or, 2002-09-17T16:04Z

Jag har en textsträng som ser ut så här:

Sep 16, 2002 23:47

Först och främst vill jag göra om denna textsträng till datumformat och sedan vill jag kunna addera/subtrahera ett visst antal timmar och minuter från detta datum.

Hur gör jag detta (det kanske är omöjligt)?

Permalänk: https://www.webforum.nu/p/53546

## #2 — Jojoxx, 2002-09-17T17:17Z

```
var monthNr=new Object;
monthNr['jan']=0;monthNr['feb']=1;
monthNr['mar']=2;monthNr['apr']=3;
monthNr['maj']=4;monthNr['jun']=5;
monthNr['jul']=6;monthNr['aug']=7;
monthNr['sep']=8;monthNr['okt']=9;
monthNr['nov']=10;monthNr['dec']=11;
function getDateObjOfLameTextString(str){
	if(!str.match(/^(\w{3}) (\d{1,2}), (\d{4}) (\d{1,2}):(\d{2})$/)){ return false; }
	return new Date(RegExp.$3,monthNr[RegExp.$1.toLowerCase()],RegExp.$2,RegExp.$4,RegExp.$5);
}

d=getDateObjOfLameTextString("Sep 16, 2002 23:47")-0;
d+=1000;
d=new Date(d);
alert(d);
```

Förklaring:

Funktionen getDateObjOfLameTextString() returnerar ett datum-objekt baserat på text-strängen som du skickar med (i det format som du skrev). Sedan gör vi en fuling och subtraherar med 0 så får vi resultatet i ms istället för ett datum-objekt. Detta sparar vi i variabeln d. På nästa rad adderar vi 1000 ms (=1 sek). JavaScript räknar gärna med ms. På nästa rad gör vi ett nytt datum-objekt baserat på ms-värdet och på raden efter det skriver vi ut resultatet. När du har datumet som ett objekt kan du använda sedvanliga funktioner som getDate, GetYear osv.

Permalänk: https://www.webforum.nu/p/788104

## #3 — i-or, 2002-09-17T18:00Z

Tack så hemskt mycket. Efter ganska mycket klurande med koden (ditt exempel var utmärkt, men för en icke javascriptskunnig blev varenda liten korrigering till ett världsproblem :) ) fick jag det att fungera.

Men desvärre måste jag ha hjälp med det sista också.

Om jag t ex skriver:

```
hours = d.getHours() + 5;
```

 

får jag 28:47 i tid (använder exemplet igen). Finns det någon funktion som adderar/subtraherar ett datum när timmarna blir mindre än 0 eller större än 23 samt adderar/subtraherar timmarna när minuterna blir mindre än 0 eller större än 59?

Permalänk: https://www.webforum.nu/p/788143

## #4 — i-or, 2002-09-17T18:08Z

Jag tog bort:

...-0;
d+=1000;
d=new Date(d);

och det blev ingen förändring. 

Vad har dessa saker för funktion? Det känns onekligen onödigt att hålla på med millisekunder och addera en sekund osv.

Permalänk: https://www.webforum.nu/p/788152

## #5 — Jojoxx, 2002-09-17T18:31Z

Nej, det är faktiskt rättså enkelt att använda ms, just av den anledningen att du kan addera x timmar (eller veckor för den delen) och inte behöva fundera på om det blev en ny dag, månad eller år. Varför? För att;

Du kan enkelt göra om ett datum-objekt i JavaScript till millisekunder (att subtrahera med 0 är enklast, detta förklarar -0). Antalet millisekuner då får är antalet millisekunder efter den 1 Januari 1970 01:00. För att sedan lägga till ex. 1 dygn adderar du det antal ms. (exeplet adderar 1 sek=1000ms). men ett dygn blir alltså;

d+=1000\*60\*60\*24;

1000=antalet ms på 1 sek
60=antalet sek på 1 min.
60=antalet min på 1 timme.
24=... :)

Sedan gör vi om allt till ett datum-objekt igen;

d=new Date(d);

Tittar du nu på d (alert(d)) så ser du att det är exakt 1 dygn mer än det datum du hade till att börja med, och du behöver inte bekymra dig om hurvida det blivit en ny månad eller år.

Permalänk: https://www.webforum.nu/p/788168

## #6 — i-or, 2002-09-17T18:46Z

Jasså, då fick millisekunderna sin förklaring samtidigt som det löste datumformateringen. Två flugor i en smäll. Lysande!

Permalänk: https://www.webforum.nu/p/788177

## #7 — i-or, 2002-09-17T19:40Z

Jojoox, det blev ett litet problem med ditt script.

Tiden skrivs 9:03 och inte 09:03. Alla tider innan 10:00 blir alltså fel. Det skulle vara jätteschysst om du kunde korrigera det.

Permalänk: https://www.webforum.nu/p/788241

## #8 — Jojoxx, 2002-09-17T19:48Z

Sorry, en miss, nu är det redigerat.

Permalänk: https://www.webforum.nu/p/788248

---

Tråden på webben: https://www.webforum.nu/amne/javascript/53546-göra-om-textsträng-till-datum
