Avatar billede swing Nybegynder
17. december 2007 - 16:38 Der er 9 kommentarer og
1 løsning

visning af tidspunkt

Hejsa

Jeg har brug for at vise et tidspunkt med kort format, f.eks. 21:30

Jeg bruger Visual basic 2005 og en access database, i mit gridview benytter jeg dataformatstring {0:t} og når jeg tester det offline så virker det perfekt.

Men når jeg uploader det til serveren viser den 12/30/1899 4:30:00 PM

Mit databasefelt i access "StartTid" er sat til kort tidsformat.

Nogen der ved hvordan jeg får det vist korrekt på serveren?
Avatar billede mikalj Nybegynder
18. december 2007 - 11:14 #1
Problemet ligger i at dit styresystem er dansk, mens serverens sikkert er engelsk, og derfor bliver tidspunktet fortolket som man vil gøre det i england/USA

.NET fortolker alle dato/tid formatter fra en database som et DateTime objekt.
DateTime har heldigvis nærmest et uendelig antal måder den kan formateres på, hvor "{0:t}" bare er en enkelt foruddefineret måde.

hvis du har et tidspunkt (tid) der er 24. december 2007, kl 21.30 kan du f.eks. gøre følgende

tid.ToString("hh:mm") = "09:30"
tid.ToString("HH:mm") = "21:30"
Bemærk at hvis du bruge string.Format(), med et datetime objekt som argument, kan du bruge samme formateringsyntax på det objekt.
string.Format("{0:%d. MMM, yyyy}", tid) = "24. dec, 2007"

i dit gridview skal du altså bruge "{0:HH:00}" for at få den formatering du gerne vil have, uafhængigt af serverens sprog

Her er et par sider som jeg har fundet utroligt nyttige da jeg skulle lære datetime formatering
http://blog.stevex.net/index.php/string-formatting-in-csharp/
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemglobalizationdatetimeformatinfoclasstopic.asp
Avatar billede mikalj Nybegynder
18. december 2007 - 11:16 #2
Hov der var lige en lille fejl.
Det er selvfølgelig "{0:HH:mm}" du skal bruge.
Avatar billede swing Nybegynder
18. december 2007 - 12:39 #3
Tak for en meget grundigt og oplysende kommentar, desværre virker det ikke på serveren når jeg skriver {0:HH:mm} i mit gridview, den fortsætter med det lange format.

Jeg var inde og kikke på de sider du anbefaler og de er rigtig gode.

Men det er da underligt at det ikke virker på serveren...
Avatar billede mikalj Nybegynder
18. december 2007 - 16:01 #4
Så er jeg bange for jeg ikke kan hjælpe dig videre uden at se koden for dit gridview.
Avatar billede swing Nybegynder
19. december 2007 - 08:56 #5
Her er min kode:

        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
                    BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2"
                    DataKeyNames="tuneringId" DataSourceID="AccessDataSource1" ForeColor="Black"
                    GridLines="None" Style="font-size: 10pt; font-family: Verdana" Width="100%" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
                    <FooterStyle BackColor="Tan" />
                    <Columns>
                        <asp:HyperLinkField DataNavigateUrlFields="tuneringlink" Target="_blank" Text="Link" />
                        <asp:BoundField DataField="tuneringSite" HeaderText="Site" SortExpression="tuneringSite" />
                        <asp:BoundField DataField="tuneringStartTid" DataFormatString="{0:HH:mm}" HeaderText="StartTid"
                            SortExpression="tuneringStartTid" />
                        <asp:BoundField DataField="tuneringBuyIn" HeaderText="BuyIn" SortExpression="tuneringBuyIn" />
                        <asp:BoundField DataField="tuneringPulje" HeaderText="Pulje" SortExpression="tuneringPulje" />
                        <asp:CommandField ButtonType="Button" SelectText="Detaljer" ShowSelectButton="True" />
                    </Columns>
                    <PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />
                    <SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
                    <HeaderStyle BackColor="Tan" Font-Bold="True" />
                    <AlternatingRowStyle BackColor="PaleGoldenrod" />
                </asp:GridView>
Avatar billede mikalj Nybegynder
19. december 2007 - 12:46 #6
Hmm, det kunne muligvis være fordi gridviewet ikke ved hvilken datatype "tuneringStartTid" indeholder og derfor prøver at formatere teksten som var det en string og ikke en datetime (hvilket undrer mig lidt eftersom den ikke havde problemer med det da du brugte "{0:t}")

men prøv at udskifte det boundfield som viser tidspunktet med følgende

<asp:TemplateField HeaderText="tuneringStartTid" SortExpression="tuneringStartTid">
    <ItemTemplate>
        <asp:Label runat="server" ID="LabelTurneringStartTid" Text='<%# Eval("tuneringStartTid", "HH:mm") %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>

Jeg har brugt dette ofte før, og har aldrig haft problemer med at vise tiden i det korrekte format (dette burde faktisk give præcis samme resultat som at bruge et boundfield med dataformat sat til "{0:HH:mm}"). Har dog aldrig brugt det i forbindelse med en access database. Det gør muglivis en forskel.
Hvis overstående ikke virker så prøv med denne lidt mere explicitte udgave.

<asp:TemplateField HeaderText="tuneringStartTid" SortExpression="tuneringStartTid">
    <ItemTemplate>
        <asp:Label runat="server" ID="LabelTurneringStartTid" Text='<%# ((DateTime)Eval("tuneringStartTid")).ToString("HH:mm") %>'></asp:Label>
    </ItemTemplate>
</asp:TemplateField>
Avatar billede swing Nybegynder
19. december 2007 - 13:09 #7
Ok når jeg bruger den første du skriver så skriver den HH:mm i browseren, det er som om at den ikke "fanger" Text='<%# Eval("tuneringStartTid", "HH:mm") %>'>
Avatar billede swing Nybegynder
19. december 2007 - 14:30 #8
Så fandt jeg en løsning :-) Ved at tilføje HtmlEncode="False":

<asp:BoundField DataField="tuneringStartTid" DataFormatString="{0:HH:mm}" HeaderText="StartTid" HtmlEncode="False" SortExpression="tuneringStartTid" />

Det var dit link der hjalp mig, smid venligst et svar for point
Avatar billede mikalj Nybegynder
19. december 2007 - 14:50 #9
Det var der :)
Avatar billede swing Nybegynder
19. december 2007 - 14:50 #10
Rigtig mage gang tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester