it-swarm.com.de

Wie man das Datumsformat in ASP .NET BoundField (DataFormatString)?

Ich habe ein dynamisches BoundField (für eine DetailsView) mit dem folgenden Code:

BoundField bf1 = new BoundField();
bf1.DataField = "CreateDate";
bf1.DataFormatString = "{0:dd/MM/yyyy}";
bf1.HtmlEncode = false;
bf1.HeaderText = "Sample Header 2";

dv.Fields.Add(bf1);

Aber irgendwie zeigt es immer noch das falsche Format: 2013-04-29T18: 15: 20.270.

Wie kann ich das beheben, damit stattdessen "29/04/2013" angezeigt wird? Danke für Ihre Hilfe.

27
iceheaven31

Bestimmen Sie den Datentyp Ihrer Datenquellenspalte "CreateDate". Stellen Sie sicher, dass ein aktuelles datetime-Feld und nicht etwa ein varchar erzeugt wird. Wenn es sich bei Ihrer Datenquelle um eine gespeicherte Prozedur handelt, ist es durchaus möglich, dass CreateDate verarbeitet wird, um einen Varchar zu erzeugen, um das Datum zu formatieren. 

SELECT CONVERT(varchar,TableName.CreateDate,126) AS CreateDate 
FROM TableName ...

Die Verwendung von CONVERT wie diesem wird häufig durchgeführt, um die Abfrageergebnisse den Anforderungen des anderen Codes zu genügen, der diese Ergebnisse verarbeiten soll. Der Stil 126 entspricht dem ISO 8601-Format, einem internationalen Standard, der mit jeder Spracheinstellung funktioniert. Ich weiß nicht, was Ihre Branche ist, aber das war wahrscheinlich beabsichtigt. Sie wollen sich nicht damit anfreunden. Dieser Stil (126) erzeugt eine Zeichenfolgendarstellung eines Datums in der Form '2013-04-29T18: 15: 20.270', so wie Sie es berichtet haben! Wenn CreateDate auf diese Weise verarbeitet wurde, können Sie jedoch nicht dafür sorgen, dass Ihr bf1.DataFormatString "29/04/2013" anzeigt. Sie müssen zuerst mit einer Datetime-Spalte in Ihrer ursprünglichen SQL-Datenquelle beginnen, damit bf1 diese ordnungsgemäß verwenden kann. Fügen Sie es einfach der Datenquellenabfrage hinzu und rufen Sie es mit einem anderen Namen wie CreateDate2 auf, um den anderen Code, der bereits von CreateDate abhängt, nicht zu stören.

SELECT CONVERT(varchar,TableName.CreateDate,126) AS CreateDate, 
       TableName.CreateDate AS CreateDate2
FROM TableName ...

Dann müssen Sie in Ihrem Code bf1 an "CreateDate2" statt an das ursprüngliche "CreateDate" binden, wie es z.

BoundField bf1 = new BoundField();
bf1.DataField = "CreateDate2";
bf1.DataFormatString = "{0:dd/MM/yyyy}";
bf1.HtmlEncode = false;
bf1.HeaderText = "Sample Header 2";

dv.Fields.Add(bf1);

Voila! Ihr Datum sollte jetzt stattdessen "29/04/2013" anzeigen!

7

Sie können dem gebundenen Feld das Attribut dataformatstring="{0:M-dd-yyyy} "hinzufügen, wie folgt:

<asp:BoundField DataField="Date" HeaderText="Date" DataFormatString="{0:dd-M-yyyy}" />

source: Datumsformat mit Datumsformat kann nicht formatiert werden

37
BornToCode

Die Formatierung hängt von der Kultureinstellung des Servers ab. Wenn Sie en-US culture verwenden, können Sie Short Date Pattern wie {0:d} verwenden.

Beispielsweise formatiert es 6/15/2009 1:45:30 zu 6/15/2009

Sie können weitere Formate unter BoundField.DataFormatString prüfen.

12
Soner Gönül

Ich hatte das gleiche Problem, brauchte nur das Kurzdatum (ohne die Zeit) anzuzeigen, außerdem mussten mehrsprachige Einstellungen vorgenommen werden. Abhängig von der Sprache, zeigen Sie dd-mm-yyyy oder mm-dd-yyyy.

Wenn Sie schließlich DataFormatString="{0:d} verwenden, funktioniert alles einwandfrei und zeigt nur das Datum mit Kulturformat an.

5
Lucas Orlando

sehr einfach, fügen Sie dies einfach zu Ihrem gebundenen Feld hinzu DataFormatString = "{0: jjjj/MM/tt}"

4
Mohammad
https://msdn.Microsoft.com/en-us/library/system.web.ui.webcontrols.boundfield.dataformatstring(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1 


In The above link you will find the answer

**C or c**

    Displays numeric values in currency format. You can specify the number of decimal places.
    Example:

Format: {0:C}
123.456 -> $123.46

**D or d**

    Displays integer values in decimal format. You can specify the number of digits. (Although the type is referred to as "decimal", the numbers are formatted as integers.)
    Example:
        Format: {0:D}
    1234 -> 1234
    Format: {0:D6}
    1234 -> 001234

    **E or e**
    Displays numeric values in scientific (exponential) format. You can specify the number of decimal places.
    Example:
    Format: {0:E}
    1052.0329112756 -> 1.052033E+003
    Format: {0:E2}
    -1052.0329112756 -> -1.05e+003

**F or f**
Displays numeric values in fixed format. You can specify the number of decimal places.
Example:
Format: {0:F}
1234.567 -> 1234.57
Format: {0:F3}
1234.567 -> 1234.567

**G or g**
Displays numeric values in general format (the most compact of either fixed-point or scientific notation). You can specify the number of significant digits.
Example:
Format: {0:G}
-123.456 -> -123.456
Format: {0:G2}
-123.456 -> -120

F or f
Displays numeric values in fixed format. You can specify the number of decimal places.
Format: {0:F}
1234.567 -> 1234.57
Format: {0:F3}
1234.567 -> 1234.567

G or g
Displays numeric values in general format (the most compact of either fixed-point or scientific notation). You can specify the number of significant digits.
Format: {0:G}
-123.456 -> -123.456
Format: {0:G2}
-123.456 -> -120

N or n
Displays numeric values in number format (including group separators and optional negative sign). You can specify the number of decimal places.
Format: {0:N}
1234.567 -> 1,234.57
Format: {0:N4}
1234.567 -> 1,234.5670

P or p
Displays numeric values in percent format. You can specify the number of decimal places.
Format: {0:P}
1 -> 100.00%
Format: {0:P1}
.5 -> 50.0%

R or r
Displays Single, Double, or BigInteger values in round-trip format.
Format: {0:R}
123456789.12345678 -> 123456789.12345678

X or x
Displays integer values in hexadecimal format. You can specify the number of digits.
Format: {0:X}
255 -> FF
Format: {0:x4}
255 -> 00ff
1
subramanya4

Die folgenden Links helfen Ihnen dabei:

Auf der clientseitigen Design-Seite können Sie this : {0: G} ausprobieren.

ODER

Sie können das Format konvertieren Sie diese Datumszeit in der Abfrage selbst aus der Datenbank:

1