---
title: "Formatera datum"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/124106-formatera-datum"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Uwe"
published: "2005-03-10T14:23:15.000Z"
updated: "2007-05-24T18:34:57.000Z"
replies: 14
views: 1795
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/dotnet/124106-formatera-datum"
---

# Formatera datum

## #1 — Uwe, 2005-03-10T14:23Z

Har lite problem att formatera datum i olika format till det svenska. Tycker inte det borde vara så svårt men nu börjar jag bli lite smått irriterad över att inte få ihop det. :x

Så till problemet: Jag tar emot ett datum i en sträng där jag även vet i vilket format det är (ex MM/dd/yyyy alt d.M.yyyy). Därifrån vill jag få det till yyyy-MM-dd. Har försökt med string.Format utan framgång. Tacksam för vilka konstruktiva förslag som helst.

/Uwe

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

## #2 — Josef, 2005-03-10T14:30Z

Provat med *culture="sv-SE" uiCulture="sv-SE"* i web.config?

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

## #3 — Uwe, 2005-03-10T14:37Z

Men det är väl bara till för vilket datumformat som sidan ska använda? I detta fallet kan användaren skriva in datum i olika format.

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

## #4 — Gladh, 2005-03-10T14:43Z

```
DateTime datum;
string stringDatum = datum.ToString("yyyy-MM-dd");
```

\- M

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

## #5 — Josef, 2005-03-10T14:44Z

Aha... Sorry. Nu förstår jag. :r

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

## #6 — Uwe, 2005-03-10T14:55Z

Gladh: Eftersom det inte är ett datum, utan en sträng jag har så blir det problem när jag vill göra strängen ex 30.8.2005 (d.M.yyyy) till ett datum.

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

## #7 — janroch, 2005-03-10T15:12Z

Lite exempel:

			string inDate = "30.8.2005";
			string inDateFormat = "d.M.yyyy";
			System.Globalization.DateTimeFormatInfo dtfi = new System.Globalization.DateTimeFormatInfo();
			dtfi.DateSeparator = ".";
			dtfi.ShortDatePattern = inDateFormat;
			DateTime theDate = DateTime.Parse(inDate, dtfi);

Nu kan du formattera datumet bäst du vill. Det enda du måste veta är hur det första datumet i inDate är formaterat och vilken separator som använts. Men det visste du väl?

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

## #8 — Uwe, 2005-03-10T15:34Z

Tack janroch, funkar perfekt!!!  :)

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

## #9 — Gladh, 2005-03-11T06:04Z

> Gladh: Eftersom det inte är ett datum, utan en sträng jag har så blir det problem när jag vill göra strängen ex 30.8.2005 (d.M.yyyy) till ett datum.

Okej, nu fattar jag med, dags att komma in i matchen kanske..

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

## #10 — Arne, 2007-05-24T08:01Z

Formatera sträng

Koden nedan fungerar perfekt för mig, men mitt problem är att den datumsträng jag har är ihopskriven utan tecken.

Har provat detta:

```
Dim inDatum As String = "19780807"
Dim inDateFormat As String = "yyyyMd"
```

men får felmeddelandet:

```
System.FormatException: Strängen identifierades inte som en giltig DateTime-sträng.
```

Vad göra?
Detta fungerar...

```
        Dim inDatum As String = "1978.08.07"
        Dim inDateFormat As String = "yyyy.M.d"
        Dim dtfi As New System.Globalization.DateTimeFormatInfo()
        dtfi.DateSeparator = "-"
        dtfi.ShortDatePattern = inDateFormat
        Dim theDate As DateTime = DateTime.Parse(inDatum, dtfi)
```

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

## #11 — Gladh, 2007-05-24T10:53Z

Har du testat att ta bort punkterna i inDateFormat strängen. Jag kan inte se att du måste ha någon separator överhuvudtaget.

Det blir dock jobbigare om du ibland har puntk som separator och ibland inte, då måste du först kontrollera detta med IndexOf() och sedan välja rätt inDateFormat.

\- M

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

## #12 — Arne, 2007-05-24T12:29Z

Missförstånd

inDatum strängen har "aldrig" punkter den är alltid ihopskriven som en hel sträng, utan separator.
Har även inga punkter i inDateFormat strängen (se kod nedan)
Det jag vill, är att få en separator för läsbarhetens skull.

Det är när jag provade (kod nedan), jag får felmeddelandet:
System.FormatException: Strängen identifierades inte som en giltig DateTime-sträng.

```
Dim inDatum As String = "19780807"
Dim inDateFormat As String = "yyyyMd"
Dim dtfi As New System.Globalization.DateTimeFormatInfo()
dtfi.DateSeparator = "-"
dtfi.ShortDatePattern = inDateFormat
Dim theDate As DateTime = DateTime.Parse(inDatum, dtfi)
```

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

## #13 — freddyk, 2007-05-24T12:52Z

> **Arne skrev:**
>
> inDatum strängen har "aldrig" punkter den är alltid ihopskriven som en hel sträng, utan separator.
> Har även inga punkter i inDateFormat strängen (se kod nedan)
> Det jag vill, är att få en separator för läsbarhetens skull.
> 
> Det är när jag provade (kod nedan), jag får felmeddelandet:
> System.FormatException: Strängen identifierades inte som en giltig DateTime-sträng.
> 
>
>
> ```
> Dim inDatum As String = "19780807"
> Dim inDateFormat As String = "yyyyMd"
> Dim dtfi As New System.Globalization.DateTimeFormatInfo()
> dtfi.DateSeparator = "-"
> dtfi.ShortDatePattern = inDateFormat
> Dim theDate As DateTime = DateTime.Parse(inDatum, dtfi)
> ```

Kan du inte göra om strängen inDatum med ett Regular Expression som infogar ett (-) mellan yyyymmdd, och sedan kastar tillbaka det som yyyy-mm-dd. Då borde det ju fungera. Förutsatt att datumet alltid ser ut så...

Ditt kodexempel letar väl efter (-) för att identifiera de olika datumdelarna? Eller har jag missuppfattat kanske...

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

## #14 — butiko, 2007-05-24T15:09Z

Om strängen med datumet alltid har samma struktur så kan du exempelvis lägga till två bindestreck på rätt plats med Insert-metoden och sedan konvertera strängen till ett datum:

```
string s = "20070101";
DateTime dt = Convert.ToDateTime(s.Insert(4, "-").Insert(7, "-"));
```

...och är det bara för läsbarhetens skull så behöver du ju inte konvertera den till ett datum heller.

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

## #15 — Gladh, 2007-05-24T18:34Z

> **Arne skrev:**
>
> Dim inDatum As String = "19780807"
> Dim inDateFormat As String = "yyyyMd"

Din datumsträng ser ju inte ut som din datumformatsträng, du har fel antal tecken.

```
Dim inDateFormat As String = "yyyyMMdd"
```

Borde fungera, jag kan inte se att du måste ha en separator med, men om du skulle behöva det, så är det ju inte så svårt att lägga till det precis som butiko visar.

Sedan så kanske du måste ändra följande kodrad också:

```
dtfi.DateSeparator = "-"
```

till

```
dtfi.DateSeparator = ""
```

\- M

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/124106-formatera-datum
