使用 DataFormatString 属性来提供列中各项的自定义格式。
数据格式字符串由以冒号分隔的两部分组成,形式为 { A : Bxx }。例如,格式化字符串 {0:F2} 将显示带两位小数的定点数。
注意 |
---|
整个字符串必须放在大括号内,表示它是格式字符串,而不是实际字符串。大括号外的任何文本均显示为实际文本。 |
冒号前的值(常规示例中为 A)指定在从零开始的参数列表中的参数索引。
注意 |
---|
此值只能设置为 0,因为每个单元格中只有一个值。 |
冒号后的字符(常规示例中为 B)指定值的显示格式。下表列出了一些常用格式。
格式字符 |
说明 |
---|---|
C |
以货币格式显示数值。 |
D |
以十进制格式显示数值。 |
E |
以科学记数法(指数)格式显示数值。 |
F |
以固定格式显示数值。 |
G |
以常规格式显示数值。 |
N |
以数字格式显示数值。 |
X |
以十六进制格式显示数值。 |
注意 |
---|
除 X 以指定的大小写形式显示十六进制字符之外,其他格式字符不区分大小写。 |
格式字符后的值(常规示例中为 xx)指定显示的值的有效位数或小数位数。
下表描述了用来格式化 DateTime 对象的标准格式说明符。
格式说明符 | 名称 | 说明 |
---|---|---|
d |
短日期模式 |
显示由与当前线程关联的 属性定义的模式或者由指定格式提供程序定义的模式。 |
D |
长日期模式 |
显示由与当前线程关联的 属性定义的模式或者由指定格式提供程序定义的模式。 |
t |
短时间模式 |
显示由与当前线程关联的 属性定义的模式或者由指定格式提供程序定义的模式。 |
T |
长时间模式 |
显示由与当前线程关联的 属性定义的模式或者由指定格式提供程序定义的模式。 |
f |
完整日期/时间模式(短时间) |
显示长日期和短时间模式的组合,由空格分隔。 |
F |
完整日期/时间模式(长时间) |
显示由与当前线程关联的 属性定义的模式或者由指定格式提供程序定义的模式。 |
g |
常规日期/时间模式(短时间) |
显示短日期和短时间模式的组合,由空格分隔。 |
G |
常规日期/时间模式(长时间) |
显示短日期和长时间模式的组合,由空格分隔。 |
M 或 m |
月日模式 |
显示由与当前线程关联的 属性定义的模式或者由指定格式提供程序定义的模式。 |
R 或 r |
RFC1123 模式 |
显示由与当前线程关联的 属性定义的模式或者由指定格式提供程序定义的模式。这是定义的标准,并且属性是只读的;因此,无论所使用的区域性或所提供的格式提供程序是什么,它总是相同的。属性引用 CultureInfo.InvariantCulture 属性并遵照自定义模式“ddd, dd MMM yyyy HH:mm:ss G/MT”。请注意,“GMT”中的“M”需要转义符,因此它不被解释。格式化并不修改 DateTime 的值,所以您必须在格式化之前将值调整为 GMT。 |
s |
可排序的日期/时间模式;符合 ISO 8601 |
显示由与当前线程关联的 属性定义的模式或者由指定格式提供程序定义的模式。属性引用 CultureInfo.InvariantCulture 属性,格式遵照自定义模式“yyyy-MM-ddTHH:mm:ss”。 |
u |
通用的可排序日期/时间模式 |
显示由与当前线程关联的 属性定义的模式或者由指定格式提供程序定义的模式。因为它是定义的标准,并且属性是只读的,因此无论区域性或格式提供程序是什么,模式总是相同的。格式化遵照自定义模式“yyyy-MM-dd HH:mm:ssZ”。格式化日期和时间时不进行时区转换;所以,请在使用格式说明符之前将本地日期和时间转换为通用时间。 |
U |
通用的可排序日期/时间模式 |
显示由与当前线程关联的 属性定义的模式或者由指定格式提供程序定义的模式。显示的时间为通用时间而不是本地时间,等效于 DateTime 值。 |
Y 或 y |
年月模式 |
显示由与当前线程关联的 属性定义的模式或者由指定格式提供程序定义的模式。 |
下表描述了自定义格式说明符以及它们产生的结果。这些格式说明符的输出受“区域选项”控制面板中的当前区域性和设置的影响。
格式说明符 | 说明 |
---|---|
d |
显示月份的当前日期,以 1 到 31 之间的一个数字表示,包括 1 和 31。如果日期只有一位数字 (1-9),则它显示为一位数字。 请注意,如果“d”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准短日期模式格式说明符。如果“d”格式说明符与其他自定义格式说明符或者“%”字符一起传递,则它被解释为自定义格式说明符。 |
dd |
显示月份的当前日期,以 1 到 31 之间的一个数字表示,包括 1 和 31。如果日期只有一位数字 (1-9),则将其格式化为带有前导 0 (01-09)。 |
ddd |
显示指定的 DateTime 的日期部分缩写名称。如果未提供特定的有效格式提供程序(实现具有预期属性的 的非空对象),则使用 的 属性及其与当前所使用线程关联的当前区域性。否则,使用来自指定格式提供程序的 AbbreviatedDayNames 属性。 |
dddd(外加任意数量的附加“d”字符) |
显示指定的 DateTime 的日期全名。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 属性及其与当前所使用线程关联的当前区域性。否则,使用来自指定格式提供程序的 DayNames 属性。 |
f |
显示秒部分的最高有效位。 请注意,如果“f”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为完整的(长日期 + 短时间)格式说明符。如果“f”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。 使用 方法进行分析时,所使用的“f”格式说明符的位数指示要分析的秒部分的最高有效位的位数。 |
ff |
显示秒部分的两个最高有效位。 |
fff |
显示秒部分的三个最高有效位。 |
ffff |
显示秒部分的四个最高有效位。 |
fffff |
显示秒部分的五个最高有效位。 |
ffffff |
显示秒部分的六个最高有效位。 |
fffffff |
显示秒部分的七个最高有效位。 |
F |
显示秒部分的最高有效位。如果该位为零,则不显示任何信息。 使用 方法进行分析时,所使用的“F”格式说明符的位数指示要分析的秒部分的最高有效位最大数。 |
FF |
显示秒部分的两个最高有效位。但不显示尾随零(或两个零位)。 |
FFF |
显示秒部分的三个最高有效位。但不显示尾随零(或三个零位)。 |
FFFF |
显示秒部分的四个最高有效位。但不显示尾随零(或四个零位)。 |
FFFFF |
显示秒部分的五个最高有效位。但不显示尾随零(或五个零位)。 |
FFFFFF |
显示秒部分的六个最高有效位。但不显示尾随零(或六个零位)。 |
FFFFFFF |
显示秒部分的七个最高有效位。但不显示尾随零(或七个零位)。 |
g 或 gg(外加任意数量的附加“g”字符) |
显示指定的 DateTime 的年代部分(例如 A.D.)。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则年代由与 DateTimeFormat 关联的日历及其与当前线程关联的当前区域性确定。 请注意,如果“g”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准常规格式说明符。如果“g”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。 |
h |
以 1 到 12 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 12)或中午(也显示为 12)后经过的整小时数。如果单独使用这种格式,则无法区别某一小时是中午以前还是中午以后的时间。如果该小时是单个数字 (1-9),则它显示为单个数字。显示小时时不发生任何舍入。例如,DateTime 为 5:43 时返回 5。 |
hh, hh(外加任意数量的附加“h”字符) |
以 1 到 12 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 12)或中午(也显示为 12)后经过的整小时数。如果单独使用这种格式,则无法区别某一小时是中午以前还是中午以后的时间。如果该小时是单个数字 (1-9),则将其格式化为前面带有 0 (01-09)。 |
H |
以 0 到 23 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 0)后经过的整小时数。如果该小时是单个数字 (0-9),则它显示为单个数字。 |
HH, HH(外加任意数量的附加“H”字符) |
以 0 到 23 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 0)后经过的整小时数。如果该小时是单个数字 (0-9),则将其格式化为前面带有 0 (01-09)。 |
m |
以 0 到 59 范围中的一个数字显示指定的 DateTime 的分钟数,该分钟数表示自上一小时后经过的整分钟数。如果分钟是一位数字 (0-9),则它显示为一位数字。 请注意,如果“m”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的月日模式格式说明符。如果“m”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。 |
mm, mm(外加任意数量的附加“m”字符) |
以 0 到 59 范围中的一个数字显示指定的 DateTime 的分钟数,该分钟数表示自上一小时后经过的整分钟数。如果分钟是一位数字 (0-9),则将其格式化为带有前导 0 (01-09)。 |
M |
显示月份,以 1 到 12 之间(包括 1 和 12)的一个数字表示。如果月份是一位数字 (1-9),则它显示为一位数字。 请注意,如果“M”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的月日模式格式说明符。如果“M”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。 |
MM |
显示月份,以 1 到 12 之间(包括 1 和 12)的一个数字表示。如果月份是一位数字 (1-9),则将其格式化为带有前导 0 (01-09)。 |
MMM |
显示指定的 DateTime 的月部分缩写名称。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 属性及其与当前线程关联的当前区域性。否则,使用来自指定格式提供程序的 AbbreviatedMonthNames 属性。 |
MMMM |
显示指定的 DateTime 的月的全名。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 属性及其与当前线程关联的当前区域性。否则,使用来自指定格式提供程序的 MonthNames 属性。 |
s |
以 0 到 59 范围中的一个数字显示指定的 DateTime 的秒数,该秒数表示自上一分钟后经过的整秒数。如果秒是一位数字 (0-9),则它仅显示为一位数字。 请注意,如果“s”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的可排序日期/时间模式格式说明符。如果“s”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。 |
ss, ss(外加任意数量的附加“s”字符) |
以 0 到 59 范围中的一个数字显示指定的 DateTime 的秒数,该秒数表示自上一分钟后经过的整秒数。如果秒是一位数字 (0-9),则将其格式化为带有前导 0 (01-09)。 |
t |
显示指定的 DateTime 的 A.M./P.M. 指示项的第一个字符。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 (或 )属性及其与当前线程关联的当前区域性。否则,使用来自指定 IFormatProvider 的 AMDesignator(或 PMDesignator)属性。如果对于指定的 DateTime 所经过的总整小时数小于 12,则使用 AMDesignator。否则,使用 PMDesignator。 请注意,如果“t”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的长时间模式格式说明符。如果“t”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。 |
tt, tt(外加任意数量的附加“t”字符) |
显示指定的 DateTime 的 A.M./P.M. 指示项。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 AMDesignator(或 PMDesignator)属性及其与当前线程关联的当前区域性。否则,使用来自指定 IFormatProvider 的 AMDesignator(或 PMDesignator)属性。如果对于指定的 DateTime 所经过的总整小时数小于 12,则使用 AMDesignator。否则,使用 PMDesignator。 |
y |
最多用两位数字显示指定的 DateTime 的年份。忽略年的前两位数字。如果年份是一位数字 (1-9),则它显示为一位数字。 请注意,如果“y”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准短日期模式格式说明符。如果“y”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。 |
yy |
最多用两位数字显示指定的 DateTime 的年份。忽略年的前两位数字。如果年份是一位数字 (1-9),则将其格式化为带有前导 0 (01-09)。 |
yyyy |
显示指定的 DateTime 的年份部分(包括纪元)。如果年份长度小于四位,则按需要在前面追加零以使显示的年份长度达到四位。 |
z |
仅以整小时数为单位显示系统当前时区的时区偏移量。偏移量总显示为带有前导符号(零显示为“+0”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值的范围是 -12 到 +13。如果偏移量为一位数 (0-9),则将其显示为带有合适前导符号的一位数。时区设置以 +X 或 –X 的形式指定,其中 X 是相对于 GMT 的小时偏差。显示的偏差受夏时制的影响。 |
zz |
仅以整小时数为单位显示系统当前时区的时区偏移量。偏移量总显示为带有前导或尾随符号(零显示为“+00”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值范围为 -12 到 +13。如果偏移量为一位数 (0-9),则将其格式化为前面带有 0 (01-09) 并带有适当的前导符号。时区设置以 +X 或 –X 的形式指定,其中 X 是相对于 GMT 的小时偏差。显示的偏差受夏时制的影响。 |
zzz, zzz(外加任意数量的附加“z”字符) |
以小时和分钟为单位显示系统当前时区的时区偏移量。偏移量总是显示为带有前导或尾随符号(零显示为“+00:00”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值范围为 -12:00 到 +13:00。如果偏移量为一位数 (0-9),则将其格式化为前面带有 0 (01-09) 并带有适当的前导符号。时区设置以 +X 或 –X 的形式指定,其中 X 是相对于 GMT 的小时偏差。显示的偏差受夏时制的影响。 |
: |
时间分隔符。 |
/ |
日期分隔符。 |
" |
带引号的字符串。显示转义符 (/) 之后两个引号之间的任何字符串的文本值。 |
' |
带引号的字符串。显示两个“'”字符之间的任何字符串的文本值。 |
%c |
其中 c 既是标准格式说明符又是自定义格式说明符,显示与格式说明符关联的自定义格式模式。 请注意,如果格式说明符作为单个字符来单独使用,它将被解释成标准格式说明符。只有包含两个或更多字符的格式说明符被解释为自定义格式说明符。说明符可以被同时定义为标准和自定义格式说明符,要显示此种说明符的自定义格式,请在说明符之前加“%”符号。 |
/c |
其中 c 是任意字符,转义符将下一个字符显示为文本。在此上下文中,转义符不能用于创建转义序列(如“/n”表示换行)。 |
任何其他字符 |
其他字符作为文本直接写入输出字符串。 |
向 DateTime.ToString 传递自定义模式时,模式必须至少为两个字符长。如果只传递“d”,则公共语言运行库将其解释为标准格式说明符,这是因为所有单个格式说明符都被解释为标准格式说明符。如果传递单个“h”,则引发异常,原因是不存在标准的“h”格式说明符。若要只使用单个自定义格式进行格式化,请在说明符的前面或后面添加一个空格。例如,格式字符串“h”被解释为自定义格式字符串。
注意 |
---|
设置日期格式时,必须设置HtmlEncode属性为false,DataFormatString才能起作用! 如: |