我有一个动态的BoundField(对于DetailsView),代码如下:
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);
但不知何故,它仍然显示错误的格式:2013-04-29T18:15:20.270。
我可以通过任何方式解决此问题,以显示“29/04/2013”吗?谢谢你的帮助。
答案 0 :(得分:40)
您可以将dataformatstring="{0:M-dd-yyyy}
“属性添加到绑定字段,如下所示:
<asp:BoundField DataField="Date" HeaderText="Date" DataFormatString="{0:dd-M-yyyy}" />
答案 1 :(得分:12)
格式化取决于服务器的文化设置。如果您使用en-US
文化,则可以使用 Short Date Pattern ,例如{0:d}
例如,它将6/15/2009 1:45:30
格式化为6/15/2009
答案 2 :(得分:8)
确定数据源列的数据类型“CreateDate”。确保它生成一个实际的日期时间字段,而不是varchar。如果您的数据源是存储过程,则完全可能正在处理CreateDate以生成varchar以格式化日期,如下所示:
SELECT CONVERT(varchar,TableName.CreateDate,126) AS CreateDate
FROM TableName ...
这样使用CONVERT通常可以使查询结果满足其他代码处理这些结果的要求。 Style 126是ISO 8601格式,是适用于任何语言设置的国际标准。我不知道你的行业是什么,但这可能是故意的。你不想搞砸它。此样式(126)以“2013-04-29T18:15:20.270”的形式生成日期的字符串表示,就像您报告的那样!但是,如果CreateDate已经以这种方式处理,那么你将无法让你的bf1.DataFormatString显示“29/04/2013”。您必须首先在原始SQL数据源中以datetime类型列开头,以便bf1正确使用它。因此,只需将其添加到数据源查询中,并使用其他名称(如CreateDate2)调用它,以免干扰其他任何已依赖于CreateDate的代码,如下所示:
SELECT CONVERT(varchar,TableName.CreateDate,126) AS CreateDate,
TableName.CreateDate AS CreateDate2
FROM TableName ...
然后,在您的代码中,您必须将bf1绑定到“CreateDate2”而不是原始的“CreateDate”,如下所示:
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);
瞧!您的日期现在应显示为“29/04/2013”!
答案 3 :(得分:5)
我有同样的问题,只需要显示短期(没有时间),而且需要有多语言设置,所以取决于语言,显示dd-mm-yyyy或mm-dd-yyyy。
最后使用DataFormatString="{0:d}
,一切正常,只显示文化格式的日期。
答案 4 :(得分:4)
非常简单,只需将其添加到绑定字段即可 DataFormatString =&#34; {0:yyyy / MM / dd}&#34;
答案 5 :(得分:1)
答案 6 :(得分:1)
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