Unable to cast object of type 'System.TimeSpan' to type 'System.IConvertible'

Ich habe in meiner SQL-Datenbank-Spalte aeStart als time(0) (die sparen Sie Zeit in der 24-Stunden-format), zum Beispiel: 10:48:00, 15:28:00, 16:32:00

Ich versuche, um anzeigen auf listView Steuerung im format hh:mm tt (am/pm-format)

    <ItemTemplate>
        <asp:Label ID="lblStart" runat="server" 
          Text='<%# Convert.ToDateTime(Eval("aeStart")).ToShortTimeString() %>' />
    </ItemTemplate>

Bekomme ich eine Fehlermeldung:

Unable to cast object of type 'System.TimeSpan' zu geben
'System.IConvertible'.

Wenn ich versuchen:

Text='<%# Eval("aeStart", "{0:HH:mm tt}") %>'

Bekomme ich:

Eingabezeichenfolge hatte nicht korrekten format.

Wenn ich nur:

Text='<%# Eval("aeStart") %>'

Ich werde etwas wie

10:48:00 oder 15:25:00

welche nicht, was ich will.

Ich soll 10:48 Uhr oder 3:25 pm

Wie man dieses Problem beheben, ich will die Zeit angezeigt, dass das label in 12-Stunden-format mit am/pm (lieber den code auf der .aspx-Datei, nicht in der code-behind)

ANTWORT:

<asp:Label ID="lblStart" runat="server" Text='<%# DateTime.ParseExact(Eval("aeStart").ToString(), "HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture).ToShortTimeString() %>' />
  • Was Daten-Typ und format datetime gespeichert in der db?
  • time(0) wie gesagt in der Frage.
  • Also warum nicht nutzen DateTime? Das ist nicht eine Zeitspanne, die Sie dort haben.
  • Was ist der Wert von aeStart damals?
Schreibe einen Kommentar