自定义日期和时间格式字符串

更新:2007 年 11 月

自定义日期和时间格式字符串定义由格式设置操作产生的 DateTimeDateTimeOffset 值的文本表示形式。自定义格式字符串由一个或多个自定义日期和时间格式说明符组成。任何不是标准日期和时间格式字符串的字符串都会解释为自定义日期和时间格式字符串。

注意   标准日期和时间格式字符串可以与 DateTimeDateTimeOffset 值一起使用。

自定义日期和时间格式说明符

下表描述了自定义日期和时间格式说明符。除非另行说明,否则,特定的自定义日期和时间格式说明符将产生相同的字符串表示形式,这与它是与 DateTime 值还是 DateTimeOffset 值一起使用无关。

格式说明符

说明

d

将月中日期表示为从 1 至 31 的数字。一位数字的日期设置为不带前导零的格式。有关使用单个自定义格式说明符的更多信息,请参见使用单个自定义格式说明符。

下面的示例在几个格式字符串中包含 d 自定义格式说明符。

dd

将月中日期表示为从 01 至 31 的数字。一位数字的日期设置为带前导零的格式。下面的示例在一个自定义格式字符串中包含 dd 自定义格式说明符。

ddd

将一周中某天的缩写名称表示为当前 DateTimeFormatInfo.AbbreviatedDayNames 属性中定义的名称。下面的示例在一个自定义格式字符串中包含 ddd 自定义格式说明符。

dddd(另加任意数量的 d 说明符)

将一周中某天的全名表示为当前 DateTimeFormatInfo.DayNames 属性中定义的名称。下面的示例在一个自定义格式字符串中包含 dddd 自定义格式说明符。

f

表示秒部分的最高有效位;也就是说,它表示日期和时间值的十分之几秒。

如果使用 f 格式说明符而没有其他格式说明符,则将该说明符解释为 f 标准日期和时间格式说明符。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

当作为格式字符串的一部分提供给 ParseExactTryParseExactParseExactTryParseExact 方法时,所用的 f 格式说明符的数目指示为成功分析字符串而必须呈现的秒部分的最高有效位的数目。

下面的示例在一个自定义格式字符串中包含 f 自定义格式说明符。

ff

表示秒部分的两个最高有效位;也就是说,它表示日期和时间值的百分之几秒。下面的示例在一个自定义格式字符串中包含 ff 自定义格式说明符。

fff

表示秒部分的三个最高有效位;也就是说,它表示日期和时间值的毫秒部分。下面的示例在一个自定义格式字符串中包含 fff 自定义格式说明符。

ffff

表示秒部分的四个最高有效位;也就是说,它表示日期和时间值的万分之几秒。

尽管可以显示时间值的秒部分的万分之几秒,但是该值可能并没有意义。日期和时间值的精度取决于系统时钟的分辨率。在 Windows NT 3.5 和更高版本以及 Windows Vista 操作系统上,时钟的分辨率大约为 10-15 毫秒。

fffff

表示秒部分的五个最高有效位;也就是说,它表示日期和时间值的十万分之几秒。

尽管可以显示时间值的秒部分的十万分之几秒,但是该值可能并没有意义。日期和时间值的精度取决于系统时钟的分辨率。在 Windows NT 3.5 和更高版本以及 Windows Vista 操作系统上,时钟的分辨率大约为 10-15 毫秒。

ffffff

表示秒部分的六个最高有效位;也就是说,它表示日期和时间值的百万分之几秒。

尽管可以显示时间值的秒部分的百万分之几秒,但是该值可能并没有意义。日期和时间值的精度取决于系统时钟的分辨率。在 Windows NT 3.5 和更高版本以及 Windows Vista 操作系统上,时钟的分辨率大约为 10-15 毫秒。

fffffff

表示秒部分的七个最高有效位;也就是说,它表示日期和时间值的千万分之几秒。

尽管可以显示时间值的秒部分的千万分之几秒,但是该值可能并没有意义。日期和时间值的精度取决于系统时钟的分辨率。在 Windows NT 3.5 和更高版本以及 Windows Vista 操作系统上,时钟的分辨率大约为 10-15 毫秒。

F

表示秒部分的最高有效位;也就是说,它表示日期和时间值的十分之几秒。如果该位为零,则不显示任何信息。

如果使用 F 格式说明符而没有其他格式说明符,则将该说明符解释为 F 标准日期和时间格式说明符。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

用于 ParseExactTryParseExactParseExactTryParseExact 方法的 F 格式说明符的数目指示为成功分析字符串而可以呈现的秒部分的最高有效位的最大数目。

下面的示例在一个自定义格式字符串中包含 F 自定义格式说明符。

FF

表示秒部分的两个最高有效位;也就是说,它表示日期和时间值的百分之几秒。但不显示尾随零或两个零位。下面的示例在一个自定义格式字符串中包含 FF 自定义格式说明符。

FFF

表示秒部分的三个最高有效位;也就是说,它表示日期和时间值的毫秒部分。但不显示尾随零或三个零位。下面的示例在一个自定义格式字符串中包含 FFF 自定义格式说明符。

FFFF

表示秒部分的四个最高有效位;也就是说,它表示日期和时间值的万分之几秒。但不显示尾随零或四个零位。

尽管可以显示时间值的秒部分的万分之几秒,但是该值可能并没有意义。日期和时间值的精度取决于系统时钟的分辨率。在 Windows NT 3.5 和更高版本以及 Windows Vista 操作系统上,时钟的分辨率大约为 10-15 毫秒。

FFFFF

表示秒部分的五个最高有效位;也就是说,它表示日期和时间值的十万分之几秒。但不显示尾随零或五个零位。

尽管可以显示时间值的秒部分的十万分之几秒,但是该值可能并没有意义。日期和时间值的精度取决于系统时钟的分辨率。在 Windows NT 3.5 和更高版本以及 Windows Vista 操作系统上,时钟的分辨率大约为 10-15 毫秒。

FFFFFF

表示秒部分的六个最高有效位;也就是说,它表示日期和时间值的百万分之几秒。但不显示尾随零或六个零位。

尽管可以显示时间值的秒部分的百万分之几秒,但是该值可能并没有意义。日期和时间值的精度取决于系统时钟的分辨率。在 Windows NT 3.5 和更高版本以及 Windows Vista 操作系统上,时钟的分辨率大约为 10-15 毫秒。

FFFFFFF

表示秒部分的七个最高有效位;也就是说,它表示日期和时间值的千万分之几秒。但不显示尾随零或七个零位。

尽管可以显示时间值的秒部分的千万分之几秒,但是该值可能并没有意义。日期和时间值的精度取决于系统时钟的分辨率。在 Windows NT 3.5 和更高版本以及 Windows Vista 操作系统上,时钟的分辨率大约为 10-15 毫秒。

g, gg(另加任意数量的 g 说明符)

表示时期或纪元,例如 A.D.。如果要设置格式的日期没有关联的时期或纪元字符串,则格式设置忽略此说明符。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

下面的示例在一个自定义格式字符串中包含 g 自定义格式说明符。

h

将小时表示为从 1 至 12 的数字,即通过 12 小时制表示小时,自午夜或中午开始对整小时计数。午夜后经过的某特定小时数与中午过后的相同小时数无法加以区分。小时数不进行舍入,一位数字的小时数设置为不带前导零的格式。例如,给定时间为 5:43,则此自定义格式说明符显示“5”。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

下面的示例在一个自定义格式字符串中包含 h 自定义格式说明符。

hh, hh(另加任意数量的 h 说明符)

将小时表示为从 01 至 12 的数字,即通过 12 小时制表示小时,自午夜或中午开始对整小时计数。午夜后经过的某特定小时数与中午过后的相同小时数无法加以区分。小时数不进行舍入,一位数字的小时数设置为带前导零的格式。例如,给定时间为 5:43,则此格式说明符显示“05”。

下面的示例在一个自定义格式字符串中包含 hh 自定义格式说明符。

H

将小时表示为从 0 至 23 的数字,即通过从零开始的 24 小时制表示小时,自午夜开始对小时计数。一位数字的小时数设置为不带前导零的格式。

有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

下面的示例在一个自定义格式字符串中包含 H 自定义格式说明符。

HH, HH(另加任意数量的 H 说明符)

将小时表示为从 00 至 23 的数字,即通过从零开始的 24 小时制表示小时,自午夜开始对小时计数。一位数字的小时数设置为带前导零的格式。下面的示例在一个自定义格式字符串中包含 HH 自定义格式说明符。

K

表示日期和时间值的时区信息。当与 DateTime 值一起使用,结果字符串由 DateTime.Kind 属性定义。对于本地时区(DateTimeKind.LocalDateTime.Kind 属性值),此说明符等效于 zzz 说明符,并产生一个包含相对于协调世界时 (UTC) 的本地偏移量的结果字符串,例如“-07:00”。对于 Utc 时间(DateTimeKind.UtcDateTime.Kind 属性值),结果字符串包括“Z”字符来表示 UTC 日期。对于未指定时区的时间(其 DateTime.Kind 属性等于 DateTimeKind.Unspecified 的时间),结果等效于 String.Empty。对于 DateTimeOffset 值,K 格式说明符等效于 zz 格式说明符,并产生包含 DateTimeOffset 值相对于 UTC 的偏移量的结果字符串。

有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

下面的示例显示对美国太平洋标准时区中的系统上的各种 DateTimeDateTimeOffset 值使用 K 自定义格式说明符所产生的字符串。

m

将分钟表示为从 0 到 59 的数字。分钟表示自前一小时后经过的整分钟数。一位数字的分钟数设置为不带前导零的格式。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。下面的示例在一个自定义格式字符串中包含 m 自定义格式说明符。

mm, mm(另加任意数量的 m 说明符)

将分钟表示为从 00 至 59 的数字。分钟表示自前一小时后经过的整分钟数。一位数字的分钟数设置为带前导零的格式。下面的示例在一个自定义格式字符串中包含 mm 自定义格式说明符。

M

将月份表示为从 1 至 12 的数字。一位数字的月份设置为不带前导零的格式。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。下面的示例在一个自定义格式字符串中包含 M 自定义格式说明符。

MM

将月份表示为从 01 至 12 的数字。一位数字的月份设置为带前导零的格式。下面的示例在一个自定义格式字符串中包含 MM 自定义格式说明符。

MMM

将月份的缩写名称表示为当前 DateTimeFormatInfo.AbbreviatedMonthNames 属性中定义的名称。下面的示例在一个自定义格式字符串中包含 MMM 自定义格式说明符。

MMMM

将月份的全名表示为当前 DateTimeFormatInfo.MonthNames 属性中定义的名称。下面的示例在一个自定义格式字符串中包含 MMMM 自定义格式说明符。

s

将秒表示为从 0 至 59 的数字。结果表示自前一分钟后经过的整秒数。一位数字的秒数设置为不带前导零的格式。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。下面的示例在一个自定义格式字符串中包含 s 自定义格式说明符。

ss, ss(另加任意数量的 s 说明符)

将秒表示为从 00 至 59 的数字。结果表示自前一分钟后经过的整秒数。一位数字的秒数设置为带前导零的格式。下面的示例在一个自定义格式字符串中包含 ss 自定义格式说明符。

t

表示在当前的 DateTimeFormatInfo.AMDesignatorDateTimeFormatInfo.PMDesignator 属性中定义的 AM/PM 指示符的第一个字符。如果正在设置格式的时间中的小时数小于 12,则使用 AM 指示符;否则使用 PM 指示符。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

下面的示例在一个自定义格式字符串中包含 t 自定义格式说明符。

tt, tt(另加任意数量的 t 说明符)

表示在当前的 DateTimeFormatInfo.AMDesignatorDateTimeFormatInfo.PMDesignator 属性中定义的 AM/PM 指示符。如果正在设置格式的时间中的小时数小于 12,则使用 AM 指示符;否则使用 PM 指示符。

对于需要维护 AM 与 PM 之间的差异的语言,应用程序应确保使用 tt 说明符。以日语为例,其 AM 和 PM 指示符的差异点为第二个字符,而非第一个字符。

下面的示例在一个自定义格式字符串中包含 tt 自定义格式说明符。

y

将年份表示为一位或两位数字。如果年份多于两位数,则结果中仅显示两位低位数。如果两位数字的年份的第一个数字以零开始(例如,2008),则该数字设置为不带前导零的格式。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

下面的示例在一个自定义格式字符串中包含 y 自定义格式说明符。

yy

将年份表示为两位数字。如果年份多于两位数,则结果中仅显示两位低位数。如果两位数字的年份的有效数字少于两个,则用前导零填充该数字使之达到两位数。

下面的示例在一个自定义格式字符串中包含 yy 自定义格式说明符。

yyy

将年份表示为最少三位数字。如果年份的有效数字多于三个,则将它们包括在结果字符串中。如果年份少于三位数,则用前导零填充该数字使之达到三位数。

请注意,对于年份可以为五位数的泰国佛历,此格式说明符将显示全部五位数。

下面的示例在一个自定义格式字符串中包含 yyy 自定义格式说明符。

yyyy

将年份表示为四位数字。如果年份多于四位数,则结果中仅显示四位低位数。如果年份少于四位数,则用前导零填充该数字使之达到四位数。

请注意,对于年份可以为五位数的泰国佛历,此格式说明符将包括全部五位数。

下面的示例在一个自定义格式字符串中包含 yyyy 自定义格式说明符。

yyyyy(另加任意数量的 y 说明符)

将年份表示为五位数字。如果年份多于五位数,则结果中仅显示五位低位数。如果年份少于五位数,则用前导零填充该数字使之达到五位数。

如果存在额外的 y 说明符,则用所需个数的前导零填充该数字使之达到 y 说明符的数目。

下面的示例在一个自定义格式字符串中包含 yyyyy 自定义格式说明符。

z

DateTime 值一起使用,表示本地操作系统的时区相对于协调世界时 (UTC) 的有符号偏移量(以小时为单位)。它不反映一个实例的 Kind 属性的值。出于此原因,不建议将 z 格式说明符与 DateTime 值一起使用。

DateTimeOffset 值一起使用,表示 DateTimeOffset 值相对于 UTC 的偏移量(以小时为单位)。

偏移量始终显示为带有前导符号。加号 (+) 指示早于 UTC 的小时数,减号 (-) 指示晚于 UTC 的小时数。偏移量范围为 –12 至 +13。一位数字的偏移量设置为不带前导零的格式。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。下面的示例在一个自定义格式字符串中包含 z 自定义格式说明符。

zz

DateTime 值一起使用,表示本地操作系统的时区相对于 UTC 的有符号偏移量(以小时为单位)。它不反映一个实例的 Kind 属性的值。出于此原因,不建议将 zz 格式说明符与 DateTime 值一起使用。

DateTimeOffset 值一起使用,表示 DateTimeOffset 值相对于 UTC 的偏移量(以小时为单位)。

偏移量始终显示为带有前导符号。加号 (+) 指示早于 UTC 的小时数,减号 (-) 指示晚于 UTC 的小时数。偏移量范围为 –12 至 +13。一位数字的偏移量设置为带前导零的格式。下面的示例在一个自定义格式字符串中包含 zz 自定义格式说明符。

zzz, zzz(另加任意数量的 z 说明符)

DateTime 值一起使用,表示本地操作系统的时区相对于 UTC 的有符号偏移量(以小时和分钟为单位)。它不反映一个实例的 Kind 属性的值。出于此原因,不建议将 zzz 格式说明符与 DateTime 值一起使用。

DateTimeOffset 值一起使用,表示 DateTimeOffset 值相对于 UTC 的偏移量(以小时和分钟为单位)。

偏移量始终显示为带有前导符号。加号 (+) 指示早于 UTC 的小时数,减号 (-) 指示晚于 UTC 的小时数。偏移量范围为 –12 至 +13。一位数字的偏移量设置为带前导零的格式。下面的示例在一个自定义格式字符串中包含 zzz 自定义格式说明符。

:

表示在当前的 DateTimeFormatInfo.TimeSeparator 属性中定义的时间分隔符。此分隔符用于区分小时、分钟和秒。

/

表示在当前的 DateTimeFormatInfo.DateSeparator 属性中定义的日期分隔符。此分隔符用于区分年、月和日。

"

表示一个用引号引起的字符串。显示两个引号 (") 之间的任意字符串的文本值。应用程序应该在每个引号前使用转义符 (\)。

'

表示一个用撇号引起的字符串。显示两个撇号 (') 字符之间的任意字符串的文本值。

%c

表示与 c 自定义格式说明符关联的结果(当自定义日期和时间格式字符串只包含该自定义格式说明符时)。也就是说,若要单独使用自定义格式说明符 d、f、F、h、m、s、t、y、z、H 或 M,应用程序应指定 %d、%f、%F、%h、%m、%s、%t、%y、%z、%H 或 %M。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

\c

表示转义符并将字符“c”显示为文本(当该字符前带有转义符 (\) 时)。若要将反斜杠字符本身插入结果字符串,应用程序应使用两个转义符(“\\”)。

任何其他字符

将所有其他字符复制到结果字符串中,而不影响格式设置。

控制面板设置

对于包含许多自定义日期和时间格式说明符的格式设置操作,控制面板中的区域和语言选项设置会影响其产生的结果字符串。这些设置用于初始化与当前线程区域性关联的 DateTimeFormatInfo 对象,当前线程区域性提供用于控制格式设置的值。使用不同设置的计算机会产生不同的结果字符串。

此外,如果使用 CultureInfo.CultureInfo(String) 构造函数实例化一个新的 CultureInfo 对象以表示与当前的系统区域性相同的区域性,则通过控制面板中的“区域和语言选项”建立的任何自定义都将应用到新的 CultureInfo 对象。可以使用 CreateSpecificCulture 方法来创建不会反映系统的自定义项的 CultureInfo 对象。

DateTimeFormatInfo 属性

格式化受当前 DateTimeFormatInfo 对象的属性影响,其由当前线程区域性隐式提供或由调用格式化的方法的 IFormatProvider 参数显示提供。应用程序应为 IFormatProvider 参数指定一个表示区域性的 CultureInfo 对象,或指定一个 DateTimeFormatInfo 对象。

由许多自定义日期和时间格式说明符产生的结果字符串取决于当前的 DateTimeFormatInfo 对象的属性。应用程序通过更改相应的 DateTimeFormatInfo 属性,可以改变由某些自定义日期和时间格式说明符产生的结果。例如, ddd 格式说明符将在 AbbreviatedDayNames 字符串数组中找到的缩写的星期名称添加到结果字符串。类似地,MMMM 格式说明符将在 MonthNames 字符串数组中找到的完整月份名称添加到结果字符串。

使用单个自定义格式说明符

自定义日期和时间格式字符串由两个或更多字符组成。例如,如果格式字符串仅包含说明符 h,则将格式字符串解释为标准日期和时间格式说明符。但是,在此特定情况下将引发异常,原因是不存在 h 标准日期和时间格式说明符。

若要使用单个自定义日期和时间格式说明符,请在日期和时间说明符之前或之后添加一个空格,或在单个自定义日期和时间说明符之前包括一个百分号 (%) 格式说明符。例如,格式字符串“h ”和“%h”将被解释为一个自定义日期和时间格式字符串,用于显示当前日期和时间值表示的小时。请注意,如果使用空格,则该字符串在结果字符串中将显示为原义字符。

请参见

概念

标准日期和时间格式字符串

参考

System.DateTime

System.IFormatProvider

其他资源

格式化类型