/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
[ASP.NET] Page Culture="da-DK" og danske d~
Fra : Jens Gyldenkærne Cla~


Dato : 19-11-02 11:05

Jeg har læst mig til at følgende kode øverst i et asp.net-dokument
skulle formatere datoer mv. på dansk:

<%@Page Culture="da-DK" Language="VB" %>

Men det virker bare ikke. Datoer bliver stadig formateret således:
"2-26-2002 11:44:18". Hvad har jeg overset?

Datoen hentes fra en SQLserver og placeres med følgende linje:

<asp:Label id="oprettet" runat="server"><%#
DataBinder.Eval(Container.DataItem, "oprettet") %></asp:Label>

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

 
 
Jesper Stocholm (19-11-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 19-11-02 11:56

Jens Gyldenkærne Clausen wrote :

> Jeg har læst mig til at følgende kode øverst i et asp.net-dokument
> skulle formatere datoer mv. på dansk:
>
> <%@Page Culture="da-DK" Language="VB" %>

det bruger jeg også.

> Men det virker bare ikke. Datoer bliver stadig formateret således:
> "2-26-2002 11:44:18". Hvad har jeg overset?
>
> Datoen hentes fra en SQLserver og placeres med følgende linje:
>
> <asp:Label id="oprettet" runat="server"><%#
> DataBinder.Eval(Container.DataItem, "oprettet") %></asp:Label>

Mig bekendt skal du formattere datoen når du udskrive den. Jeg gør
det med

<%# System.Convert.ToDateTime(DataBinder.Eval(Container.DataItem, "oprettet").ToString()).ToString("dd. MMM yyyy") %>

Det er ToString(), der, når den påduttes et dato-object kan overloades
med en formatteringsstreng.

For ikke at skulle lave din culture-specifikation på hver side - hvor
jeg principielt ikke mener den hører hjemme, så kan du sætte den i
din global.aspx

Dette gør jeg som

protected void Application_BeginRequest(Object sender, EventArgs e)
{
   try
   {
      Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");
   }
   catch
   {
      Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
   }
   Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
}

.... hvor en-GB så skal udskiftes. Idéen er - som jeg forstår det - at
localization i .Net sker på tråd-niveau, så tråden, der oprettes ved
det initialiserende request, får altså her den specifikke culture en-GB.
Så er du fri for at sætte det på hver side.



--
Jesper Stocholm
http://stocholm.dk
Ny FAQ for dk.edb.internet.webdesign.serverside.asp
se http://asp-faq.dk

Jens Gyldenkærne Cla~ (19-11-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-11-02 12:40

Jesper Stocholm skrev:

> Mig bekendt skal du formattere datoen når du udskrive den.

Oh - se det var nyt for mig.


> <%#
> System.Convert.ToDateTime(DataBinder.Eval(Container.DataItem,
> "oprettet").ToString()).ToString("dd. MMM yyyy") %>

Og der virker perfekt. Mon ikke man kan putte det i en funktion,
når man nu har flere datoer der skal formateres (prøver lige).


> For ikke at skulle lave din culture-specifikation på hver side
> - hvor jeg principielt ikke mener den hører hjemme, så kan du
> sætte den i din global.aspx

Der skal den naturligvis også over. Foreløbig slamkoder jeg så
hurtigt remmerne kan holde - så må optimeringen komme når de første
- stærkt afventede - sider virker.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Brian Hjøllund (19-11-2002)
Kommentar
Fra : Brian Hjøllund


Dato : 19-11-02 15:41

On Tue, 19 Nov 2002 12:40:13 +0100, "Jens Gyldenkærne Clausen"
<jc@dmf.dk> wrote:

>Og der virker perfekt. Mon ikke man kan putte det i en funktion,
>når man nu har flere datoer der skal formateres (prøver lige).

Det kan du sagtens
Opret en funktion der f.eks. hedder FormatDato som tager et DateTime
objekt som parameter og returner en formateret string.

Eksempel:

public string FormatDato( DateTime objDT )
{
   return objDT.ToString("dd. MMM yyyy");
}

/Brian
http://www.hybreed.net


Jens Gyldenkærne Cla~ (19-11-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-11-02 16:07

Brian Hjøllund skrev:

>>Og der virker perfekt. Mon ikke man kan putte det i en
>>funktion, når man nu har flere datoer der skal formateres
>>(prøver lige).
>
> Det kan du sagtens

Det lykkedes også.

> Opret en funktion der f.eks. hedder FormatDato som tager et
> DateTime objekt som parameter og returner en formateret
> string.

Jeg foretrækker at have så meget som muligt i funktionen, så derfor
tager min FormatDato et object som argument - så kan den også
håndtere nullværdier.

Min udgave er her (i VB):
   '====================== Public formatDato =================
   'Action: Formaterer en dato efter gældende locale
   'Returns: String
   '==========================================================
   Public Function formatDato (inputFelt As Object)
      If IsDbNull(inputFelt) Then
         formatDato = ""      
      Else
         formatDato =
   System.Convert.ToDateTime(inputFelt.ToString()).ToString("dd.
MMM yyyy kl. hh:mm")
      End If
   End Function
   '==========================================================


--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408951
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste