---
title: "Skriva ut datum"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/88161-skriva-ut-datum"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "andreas_lindh"
published: "2003-10-10T11:45:21.000Z"
updated: "2003-10-12T10:11:03.000Z"
replies: 13
views: 608
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/88161-skriva-ut-datum"
---

# Skriva ut datum

## #1 — andreas_lindh, 2003-10-10T11:45Z

Jag har ett datum jag hämtar från en databas.
Nu försöker jag skriva ut det i formatet
Torsdagen den 16 oktober 2003 .

jag har provat med 

```
datetime.now.tostring("D")
```

men då skrivs bara
den 16 oktober 2003 ut.

Hur ska jag göra för att skriva ut dagen också?

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

## #2 — Gladh, 2003-10-10T11:56Z

Här kan du säkert hitta vad du vill.

<http://weblog.stevex.org/radio/stories/2002/12/10/stringFormattingInC.html>

\- M

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

## #3 — andreas_lindh, 2003-10-10T12:06Z

Tack.

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

## #4 — Engine^, 2003-10-10T12:24Z

En tråkig lösning för att få namnet på dagen:

```
DateTime dteNow = new DateTime(DateTime.Now());
string strDay;

switch(dteNow.DayOfWeek)
{
  case DateTime.Monday:
    strDay = "Måndag";
    break;
  case DateTime.Tuesday:
    strDay = "Tisdag";
    break;
  case DateTime.Wednesday:
    strDay = "Onsdag";
    break;
  case DateTime.Thursday:
    strDay = "Torsdag";
    break;
  case DateTime.Friday:
    strDay = "Fredag";
    break;
  case DateTime.Saturday:
    strDay = "Lördag";
    break;
  case DateTime.Sunday:
    strDay = "Söndag";
    break;
}
```

En mycket snyggare lösning:

```
DateTime dteNow = new DateTime(DateTime.Now());
string[] astrDayOfWeek = new string[7] {"Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag", "Söndag"};
string strDay = astrDayOfWeek[dteNow.DayOfWeek - 1];
```

Och givetvis en stevex.org-lösning (tro vilken som är mest användbar ;))

```
string strDate = string.Format({0:dddd den dd MMMM yyyy}, DateTime.Now());
```

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

## #5 — andreas_lindh, 2003-10-11T09:49Z

Först gjorde som ditt första exempel.

Sen gjorde jag en annan funktion för att skriva ut datumet

```
    Public Function datum(ByVal _datum As String)
        Dim _d As DateTime = CDate(_datum)
        Return _d.ToString("dddd") & "en " & _d.ToString("D")
    End Function
```

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

## #6 — Gladh, 2003-10-11T21:56Z

andreas!

Din kod är betydligt långsammare än Engine's lösning. Anledningen till detta är att när man lägger ihop 2 strängar så skapas en ny sträng och när du sedan lägger ihop den nya strängen med ytterligare 1 så skappas ytterligare 1 ny sträng.

Det betyder att din kod skapar 2 nya strängar för att skicka tillbaka datumet. Medans Enigens exempel skapas en ny sträng (MS har fixat så att ToString() inte är prestanda krävande, kommer inte ihåg exakt, men det skall inte ta så mycket prestanda).

Alltså ur prestanda synpunkt är ditt förslag sämre :(. Att lägga ihop strängar med & (VB.NET) och + (C#) är prestanda dödande och om man skall lägga ihop en massa strängar så använder man stringbuilder klassen.

\- M

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

## #7 — andreas_lindh, 2003-10-11T22:20Z

Ok. Tack för tipset.

gjorde om funktionen

```
    Public Function datum(ByVal _datum As String)
        Dim _d As DateTime = CDate(_datum)
        Dim _s As String = Format(_d, "dddden den dd MMMM yyyy")
        Return _s
    End Function
```

Nu skrivs söndagen 21en 21 oktober 2001 ut.
Hur ska jag göra för att skriva ut söndagen den 21 oktober 2001 ?

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

## #8 — Vimp, 2003-10-11T23:28Z

Kan du inte skippa "en" efter namnet på dagen?
D.v.s. köra det här:

```
    Public Function datum(ByVal _datum As String)
        Dim _d As DateTime = CDate(_datum)
        Dim _s As String = Format(_d, "dddd den dd MMMM yyyy")
        Return _s
    End Function
```

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

## #9 — andreas_lindh, 2003-10-12T08:39Z

Det är inget problem med "en" efter dagen. Problemet är d i den.
Den tror att den ska skriva ut datumet

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

## #10 — Engine^, 2003-10-12T09:05Z

Fungerar det om du escape:ar d:et då?

```
Dim _s As String = Format(_d, "dddd \den dd MMMM yyyy")
```

Nu blev jag osäkert på om det fungerar så, men det går ju alltid att testa ;)

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

## #11 — andreas_lindh, 2003-10-12T09:15Z

Tack :)
Det fungerade med \\den

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

## #12 — Gladh, 2003-10-12T09:26Z

Här får du en funktion som fungerar.

```
 public string datum(DateTime myDateTime){
 System.Text.StringBuilder oSB =  new System.Text.StringBuilder();
 oSB.Append(myDateTime.ToString("dddd"));
 oSB.Append("en den ");
 oSB.Append(myDateTime.ToString("dd MMMM yyyy"));
 return oSB.ToString();
}
```

\- M

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

## #13 — Engine^, 2003-10-12T09:29Z

StringBuilder är en mycket trevlig klass (och det ska vara bättre att använda den istället för string om jag har förstått det hela).

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

## #14 — andreas_lindh, 2003-10-12T10:11Z

Tack Gladh :) 

Använder din funktion istället.
Är den mycket bättre än den sista jag skrev?

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/88161-skriva-ut-datum
