分享

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

 务实耐久 2014-01-25

日期和时间格式字符串定义由格式设置操作生成的 DateTimeDateTimeOffset 值的文本表示形式。 它还可定义分析操作中需要的日期和时间值的表示形式,以便成功将字符串转换为日期和时间。 自定义格式字符串由一个或多个自定义日期和时间格式说明符组成。 任何不是标准日期和时间格式字符串的字符串都会解释为自定义日期和时间格式字符串。

自定义日期和时间格式字符串可以与 DateTimeDateTimeOffset 值一起使用。

提示 提示

你可以下载格式实用工具,通过该应用程序,你可将格式字符串应用于日期和时间或数值并显示结果字符串。

在格式设置操作中,可将自定义日期和时间格式字符串与日期和时间实例的 ToString 方法或支持复合格式的方法结合使用。 下面的示例演示了这两种用法。

DateTime thisDate1 = new DateTime(2011, 6, 10);
Console.WriteLine("Today is " + thisDate1.ToString("MMMM dd, yyyy") + ".");

DateTimeOffset thisDate2 = new DateTimeOffset(2011, 6, 10, 15, 24, 16, 
                                              TimeSpan.Zero);
Console.WriteLine("The current date and time: {0:MM/dd/yy H:mm:ss zzz}", 
                   thisDate2); 
// The example displays the following output:
//    Today is June 10, 2011.
//    The current date and time: 06/10/11 15:24:16 +00:00


在分析操作中,自定义日期和时间格式字符串可用于 DateTime.ParseExactDateTime.TryParseExactDateTimeOffset.ParseExactDateTimeOffset.TryParseExact 方法。 这些方法需要一个完全符合使分析操作成功所需的特定模式的输入字符串。 下面的示例演示对 DateTimeOffset.ParseExact(String, String, IFormatProvider) 方法的调用,以分析必须包括日、月和两位数年份的日期。

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] dateValues = { "30-12-2011", "12-30-2011", 
                              "30-12-11", "12-30-11" };
      string pattern = "MM-dd-yy";
      DateTime parsedDate;

      foreach (var dateValue in dateValues) {
         if (DateTime.TryParseExact(dateValue, pattern, null, 
                                   DateTimeStyles.None, out parsedDate))
            Console.WriteLine("Converted '{0}' to {1:d}.", 
                              dateValue, parsedDate);
         else
            Console.WriteLine("Unable to convert '{0}' to a date and time.", 
                              dateValue);
      }
   }
}
// The example displays the following output:
//    Unable to convert '30-12-2011' to a date and time.
//    Unable to convert '12-30-2011' to a date and time.
//    Unable to convert '30-12-11' to a date and time.
//    Converted '12-30-11' to 12/30/2011.


下表描述自定义日期和时间格式说明符并显示由每个格式说明符生成的结果字符串。 默认情况下,结果字符串反映 zh-cn 区域性的格式设置约定。 如果特定格式说明符生成本地化结果字符串,则该示例还注明结果字符串适用的区域性。 有关使用自定义日期和时间格式字符串的附加信息,请参见注释部分。

格式说明符

说明

示例

"d"

一个月中的某一天(1 到 31)。

有关更多信息,请参见“d”自定义格式说明符

6/1/2009 1:45:30 PM -> 1

6/15/2009 1:45:30 PM -> 15

“dd”

一个月中的某一天(01 到 31)。

有关更多信息,请参见“dd”自定义格式说明符

6/1/2009 1:45:30 PM -> 01

6/15/2009 1:45:30 PM -> 15

“ddd”

一周中某天的缩写名称。

有关更多信息,请参见“ddd”自定义格式说明符

6/15/2009 1:45:30 PM -> Mon (zh-cn)

6/15/2009 1:45:30 PM -> Пн (ru-RU)

6/15/2009 1:45:30 PM -> lun.(fr-FR)

“dddd”

一周中某天的完整名称。

有关更多信息,请参见“dddd”自定义格式说明符

6/15/2009 1:45:30 PM -> Monday (zh-cn)

6/15/2009 1:45:30 PM -> понедельник (ru-RU)

6/15/2009 1:45:30 PM -> lundi (fr-FR)

“f”

日期和时间值的十分之几秒。

有关更多信息,请参见“f”自定义格式说明符

6/15/2009 13:45:30.617 -> 6

6/15/2009 13:45:30.050 -> 0

“ff”

日期和时间值的百分之几秒。

有关更多信息,请参见“ff”自定义格式说明符

6/15/2009 13:45:30.617 -> 61

6/15/2009 13:45:30.005 -> 00

“fff”

日期和时间值的千分之几秒。

有关更多信息,请参见“fff”自定义格式说明符

6/15/2009 13:45:30.617 -> 617

6/15/2009 13:45:30.0005 -> 000

“ffff”

日期和时间值的万分之几秒。

有关更多信息,请参见“ffff”自定义格式说明符

6/15/2009 13:45:30.6175 -> 6175

6/15/2009 13:45:30.00005 -> 0000

“fffff”

日期和时间值的十万分之几秒。

有关更多信息,请参见“fffff”自定义格式说明符

6/15/2009 13:45:30.61754 -> 61754

6/15/2009 13:45:30.000005 -> 00000

“ffffff”

日期和时间值的百万分之几秒。

有关更多信息,请参见“ffffff”自定义格式说明符

6/15/2009 13:45:30.617542 -> 617542

6/15/2009 13:45:30.0000005 -> 000000

“fffffff”

日期和时间值的千万分之几秒。

有关更多信息,请参见“fffffff”自定义格式说明符

6/15/2009 13:45:30.6175425 -> 6175425

6/15/2009 13:45:30.0001150 -> 0001150

“F”

如果非零,则为日期和时间值的十分之几秒。

有关更多信息,请参见“F”自定义格式说明符

6/15/2009 13:45:30.617 -> 6

6/15/2009 13:45:30.050 ->(无输出)

“FF”

如果非零,则为日期和时间值的百分之几秒。

有关更多信息,请参见“FF”自定义格式说明符

6/15/2009 13:45:30.617 -> 61

6/15/2009 13:45:30.005 ->(无输出)

“FFF”

如果非零,则为日期和时间值的千分之几秒。

有关更多信息,请参见“FFF”自定义格式说明符

6/15/2009 13:45:30.617 -> 617

6/15/2009 13:45:30.0005 ->(无输出)

“FFFF”

如果非零,则为日期和时间值的万分之几秒。

有关更多信息,请参见“FFFF”自定义格式说明符

6/1/2009 13:45:30.5275 -> 5275

6/15/2009 13:45:30.00005 ->(无输出)

“FFFFF”

如果非零,则为日期和时间值的十万分之几秒。

有关更多信息,请参见“FFFFF”自定义格式说明符

6/15/2009 13:45:30.61754 -> 61754

6/15/2009 13:45:30.000005 ->(无输出)

“FFFFFF”

如果非零,则为日期和时间值的百万分之几秒。

有关更多信息,请参见“FFFFFF”自定义格式说明符

6/15/2009 13:45:30.617542 -> 617542

6/15/2009 13:45:30.0000005 ->(无输出)

“FFFFFFF”

如果非零,则为日期和时间值的千万分之几秒。

有关更多信息,请参见“FFFFFFF”自定义格式说明符

6/15/2009 13:45:30.6175425 -> 6175425

6/15/2009 13:45:30.0001150 -> 000115

“g”、“gg”

时期或纪元。

有关更多信息,请参见“g”或“gg”自定义格式说明符

6/15/2009 1:45:30 PM -> A.D.

“h”

采用 12 小时制的小时(从 1 到 12)。

有关更多信息,请参见“h”自定义格式说明符

6/15/2009 1:45:30 AM -> 1

6/15/2009 1:45:30 PM -> 1

“hh”

采用 12 小时制的小时(从 01 到 12)。

有关更多信息,请参见“hh”自定义格式说明符

6/15/2009 1:45:30 AM -> 01

6/15/2009 1:45:30 PM -> 01

“H”

采用 24 小时制的小时(从 0 到 23)。

有关更多信息,请参见“H”自定义格式说明符

6/15/2009 1:45:30 AM -> 1

6/15/2009 1:45:30 PM -> 13

“HH”

采用 24 小时制的小时(从 00 到 23)。

有关更多信息,请参见“HH”自定义格式说明符

6/15/2009 1:45:30 AM -> 01

6/15/2009 1:45:30 PM -> 13

“K”

时区信息。

有关更多信息,请参见“K”自定义格式说明符

DateTime 值:

6/15/2009 1:45:30 PM(未指定类型)->

6/15/2009 1:45:30 PM(UTC 类型)-> Z

6/15/2009 1:45:30 PM(本地类型)-> -07:00(取决于本地计算机设置)

DateTimeOffset 值:

6/15/2009 1:45:30 AM -07:00 --> -07:00

6/15/2009 8:45:30 AM +00:00 --> +00:00

“m”

分钟(0 到 59)。

有关更多信息,请参见“m”自定义格式说明符

6/15/2009 1:09:30 AM -> 9

6/15/2009 1:09:30 PM -> 9

“mm”

分钟(00 到 59)。

有关更多信息,请参见“mm”自定义格式说明符

6/15/2009 1:09:30 AM -> 09

6/15/2009 1:09:30 PM -> 09

“M”

月份(1 到 12)。

有关更多信息,请参见“M”自定义格式说明符

6/15/2009 1:45:30 PM -> 6

“MM”

月份(1 到 12)。

有关更多信息,请参见“MM”自定义格式说明符

6/15/2009 1:45:30 PM -> 06

“MMM”

月份的缩写名称。

有关更多信息,请参见“MMM”自定义格式说明符

6/15/2009 1:45:30 PM -> Jun (zh-cn)

6/15/2009 1:45:30 PM -> juin (fr-FR)

6/15/2009 1:45:30 PM -> Jun (zu-ZA)

“MMMM”

月份的完整名称。

有关更多信息,请参见“MMMM”自定义格式说明符

6/15/2009 1:45:30 PM -> June (zh-cn)

6/15/2009 1:45:30 PM -> juni (da-DK)

6/15/2009 1:45:30 PM -> uJuni (zu-ZA)

“s”

秒(0 到 59)。

有关更多信息,请参见“s”自定义格式说明符

6/15/2009 1:45:09 PM -> 9

“ss”

秒(00 到 59)。

有关更多信息,请参见“ss”自定义格式说明符

6/15/2009 1:45:09 PM -> 09

“t”

AM/PM 指示符的第一个字符。

有关更多信息,请参见“t”自定义格式说明符

6/15/2009 1:45:30 PM -> P (zh-cn)

6/15/2009 1:45:30 PM -> 午 (ja-JP)

6/15/2009 1:45:30 PM -> (fr-FR)

“tt”

AM/PM 指示符。

有关更多信息,请参见“tt”自定义格式说明符

6/15/2009 1:45:30 PM -> PM (zh-cn)

6/15/2009 1:45:30 PM -> 午後 (ja-JP)

6/15/2009 1:45:30 PM -> (fr-FR)

“y”

年份(0 到 99)。

有关更多信息,请参见“y”自定义格式说明符

1/1/0001 12:00:00 AM -> 1

1/1/0900 12:00:00 AM -> 0

1/1/1900 12:00:00 AM -> 0

6/15/2009 1:45:30 PM -> 9

“yy”

年份(00 到 99)。

有关更多信息,请参见“yy”自定义格式说明符

1/1/0001 12:00:00 AM -> 01

1/1/0900 12:00:00 AM -> 00

1/1/1900 12:00:00 AM -> 00

6/15/2009 1:45:30 PM -> 09

“yyy”

年份(最少三位数字)。

有关更多信息,请参见“yyy”自定义格式说明符

1/1/0001 12:00:00 AM -> 001

1/1/0900 12:00:00 AM -> 900

1/1/1900 12:00:00 AM -> 1900

6/15/2009 1:45:30 PM -> 2009

“yyyy”

由四位数字表示的年份。

有关更多信息,请参见“yyyy”自定义格式说明符

1/1/0001 12:00:00 AM -> 0001

1/1/0900 12:00:00 AM -> 0900

1/1/1900 12:00:00 AM -> 1900

6/15/2009 1:45:30 PM -> 2009

“yyyyy”

由五位数字表示的年份。

有关更多信息,请参见“yyyyy”自定义格式说明符

1/1/0001 12:00:00 AM -> 00001

6/15/2009 1:45:30 PM -> 02009

“z”

相对于 UTC 的小时偏移量,无前导零。

有关更多信息,请参见“z”自定义格式说明符

6/15/2009 1:45:30 PM -07:00 -> -7

“zz”

相对于 UTC 的小时偏移量,带有表示一位数值的前导零。

有关更多信息,请参见“zz”自定义格式说明符

6/15/2009 1:45:30 PM -07:00 -> -07

“zzz”

相对于 UTC 的小时和分钟偏移量。

有关更多信息,请参见“zzz”自定义格式说明符

6/15/2009 1:45:30 PM -07:00 -> -07:00

“:”

时间分隔符。

有关更多信息,请参见“:”自定义格式说明符

6/15/2009 1:45:30 PM -> : (zh-cn)

6/15/2009 1:45:30 PM -> .(it-IT)

6/15/2009 1:45:30 PM -> : (ja-JP)

“/”

日期分隔符。

有关更多信息,请参见“/”自定义格式说明符

6/15/2009 1:45:30 PM -> / (zh-cn)

6/15/2009 1:45:30 PM -> - (ar-DZ)

6/15/2009 1:45:30 PM -> .(tr-TR)

"string"

'string'

文本字符串分隔符。

6/15/2009 1:45:30 PM ("arr:" h:m t) -> arr: 1:45 P

6/15/2009 1:45:30 PM ('arr:' h:m t) -> arr: 1:45 P

%

将下面的字符定义为自定义格式说明符。

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

6/15/2009 1:45:30 PM (%h) -> 1

\

转义字符。

6/15/2009 1:45:30 PM (h \h) -> 1 h

任何其他字符

字符将复制到未更改的结果字符串。

有关更多信息,请参见使用转义字符

6/15/2009 1:45:30 AM (arr hh:mm t) -> arr 01:45 A

以下各节提供有关每个自定义日期和时间格式说明符的附加信息。 除非另行说明,否则,每个说明符将生成相同的字符串表示形式,这与它是与 DateTime 值一起使用还是与 DateTimeOffset 值一起使用无关。

“d”自定义格式说明符将一个月中的某一天表示为从 1 到 31 的数字。 一位数的日期设置为不带前导零的格式。

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

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

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15); 

Console.WriteLine(date1.ToString("d, M", 
                  CultureInfo.InvariantCulture)); 
// Displays 29, 8

Console.WriteLine(date1.ToString("d MMMM", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays 29 August
Console.WriteLine(date1.ToString("d MMMM", 
                  CultureInfo.CreateSpecificCulture("es-MX")));
// Displays 29 agosto                                                


返回表首

“dd”自定义格式字符串将一个月中的某一天表示为从 01 到 31 的数字。 一位数的日期设置为带有前导零的格式。

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

DateTime date1 = new DateTime(2008, 1, 2, 6, 30, 15);

Console.WriteLine(date1.ToString("dd, MM", 
                  CultureInfo.InvariantCulture)); 
// 02, 01


返回表首

“ddd”自定义格式说明符表示一周中某天的缩写名称。 一周中某天的本地化缩写名称通过当前或指定区域性的 DateTimeFormatInfo.AbbreviatedDayNames 属性进行检索。

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

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("ddd d MMM", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays ven. 29 ao?t                                                


返回表首

“dddd”自定义格式说明符(以及任意数量的附加“d”说明符)表示一周中某天的完整名称。 一周中某天的本地化名称通过当前或指定区域性的 DateTimeFormatInfo.DayNames 属性进行检索。

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

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("dddd dd MMMM", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Friday 29 August
Console.WriteLine(date1.ToString("dddd dd MMMM", 
                  CultureInfo.CreateSpecificCulture("it-IT")));
// Displays venerdì 29 agosto                                


返回表首

“f”自定义格式说明符表示秒部分的最高有效位;也就是说,它表示日期和时间值的十分之几秒。

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

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

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

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018


返回表首

“ff”自定义格式说明符表示秒部分的前两个有效位;也就是说,它表示日期和时间值的百分之几秒。

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

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018


返回表首

“fff”自定义格式说明符表示秒部分的前三个有效位;也就是说,它表示日期和时间值的毫秒。

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

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018


返回表首

“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”自定义格式说明符。

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018


返回表首

“FF”自定义格式说明符表示秒部分的前两个有效位;也就是说,它表示日期和时间值的百分之几秒。 但不显示尾随零或两个零位。

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

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018


返回表首

“FFF”自定义格式说明符表示秒部分的前三个有效位;也就是说,它表示日期和时间值的毫秒。 但不显示尾随零或三个零位。

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

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018


返回表首

“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”格式说明符而没有其他自定义格式说明符,则将该说明符解释为“g”标准日期和时间格式说明符。 有关使用单个格式说明符的更多信息,请参见此主题后面的使用单个自定义格式说明符

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

DateTime date1 = new DateTime(70, 08, 04);

Console.WriteLine(date1.ToString("MM/dd/yyyy g", 
                  CultureInfo.InvariantCulture));
// Displays 08/04/0070 A.D.                        
Console.WriteLine(date1.ToString("MM/dd/yyyy g", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));                         
// Displays 08/04/0070 ap. J.-C.


返回表首

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

如果使用“h”格式说明符而没有其他自定义格式说明符,则将该说明符解释为标准日期和时间格式说明符,并引发 FormatException 有关使用单个格式说明符的更多信息,请参见此主题后面的使用单个自定义格式说明符

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

DateTime date1; 
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1 μ                        
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5 μ


返回表首

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

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

DateTime date1; 
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt", 
                  CultureInfo.InvariantCulture));
// Displays 06:09:01 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss tt", 
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", 
                  CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", 
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.


返回表首

“H”自定义格式说明符将小时表示为从 0 至 23 的数字,即通过从零开始的 24 小时制表示小时,自午夜或中午开始对整小时计数。 一位数字的小时数设置为不带前导零的格式。

如果使用“H”格式说明符而没有其他自定义格式说明符,则将该说明符解释为标准日期和时间格式说明符,并引发 FormatException 有关使用单个格式说明符的更多信息,请参见此主题后面的使用单个自定义格式说明符

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

DateTime date1 = new DateTime(2008, 1, 1, 6, 9, 1);
Console.WriteLine(date1.ToString("H:mm:ss", 
                  CultureInfo.InvariantCulture));
// Displays 6:09:01              


返回表首

“HH”自定义格式说明符(以及任意数量的附加“H”说明符)将小时表示为从 00 至 23 的数字,即通过从零开始的 24 小时制表示小时,自午夜或中午开始对整小时计数。 一位数字的小时数设置为带前导零的格式。

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

DateTime date1 = new DateTime(2008, 1, 1, 6, 9, 1);
Console.WriteLine(date1.ToString("HH:mm:ss", 
                  CultureInfo.InvariantCulture));
// Displays 06:09:01                        


返回表首

“K”自定义格式说明符表示日期和时间值的时区信息。 当此格式说明符与 DateTime 值一起使用时,结果字符串由 DateTime.Kind 属性的值进行定义:

对于 DateTimeOffset 值,“K”格式说明符等效于“zz”格式说明符,并产生包含 DateTimeOffset 值相对于 UTC 的偏移量的结果字符串。

如果使用“K”格式说明符而没有其他自定义格式说明符,则将该说明符解释为标准日期和时间格式说明符,并引发 FormatException 有关使用单个格式说明符的更多信息,请参见此主题后面的使用单个自定义格式说明符

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

Console.WriteLine(DateTime.Now.ToString("%K"));
// Displays -07:00
Console.WriteLine(DateTime.UtcNow.ToString("%K"));
// Displays Z      
Console.WriteLine("'{0}'", 
                  DateTime.SpecifyKind(DateTime.Now, 
                       DateTimeKind.Unspecified).ToString("%K"));
// Displays ''      
Console.WriteLine(DateTimeOffset.Now.ToString("%K"));
// Displays -07:00
Console.WriteLine(DateTimeOffset.UtcNow.ToString("%K"));
// Displays +00:00
Console.WriteLine(new DateTimeOffset(2008, 5, 1, 6, 30, 0, 
                      new TimeSpan(5, 0, 0)).ToString("%K"));
// Displays +05:00                        


返回表首

“m”自定义格式说明符将分钟表示为从 0 到 59 的数字。 分钟表示自上一小时以来经过的整分钟数。 一位数字的分钟数设置为不带前导零的格式。

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

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

DateTime date1; 
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1 μ                        
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5 μ


返回表首

“mm”自定义格式说明符(以及任意数量的附加“m”说明符)将分钟表示为从 00 到 59 的数字。 分钟表示自上一小时以来经过的整分钟数。 一位数字的分钟数设置为带前导零的格式。

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

DateTime date1; 
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt", 
                  CultureInfo.InvariantCulture));
// Displays 06:09:01 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss tt", 
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", 
                  CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", 
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.


返回表首

“M”自定义格式说明符将月份表示为从 1 到 12 的数字(对于有 13 个月的日历,将月份表示为从 1 到 13 的数字)。 一位数字的月份数设置为不带前导零的格式。

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

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

DateTime date1 = new DateTime(2008, 8, 18);
Console.WriteLine(date1.ToString("(M) MMM, MMMM", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays (8) Aug, August
Console.WriteLine(date1.ToString("(M) MMM, MMMM", 
                  CultureInfo.CreateSpecificCulture("nl-NL")));                       
// Displays (8) aug, augustus
Console.WriteLine(date1.ToString("(M) MMM, MMMM", 
                  CultureInfo.CreateSpecificCulture("lv-LV")));                        
// Displays (8) Aug, augusts                       


返回表首

“MM”自定义格式说明符将月份表示为从 01 到 12 的数字(对于有 13 个月的日历,将月份表示为从 1 到 13 的数字)。 一位数字的月份数设置为带有前导零的格式。

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

DateTime date1 = new DateTime(2008, 1, 2, 6, 30, 15);

Console.WriteLine(date1.ToString("dd, MM", 
                  CultureInfo.InvariantCulture)); 
// 02, 01


返回表首

“MMM”自定义格式说明符表示月份的缩写名称。 月份的本地化缩写名称通过当前或指定区域性的 DateTimeFormatInfo.AbbreviatedMonthNames 属性进行检索。

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

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("ddd d MMM", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM", 
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays ven. 29 ao?t                                                


返回表首

“MMMM”自定义格式说明符表示月份的完整名称。 月份的本地化名称通过当前或指定区域性的 DateTimeFormatInfo.MonthNames 属性进行检索。

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

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("dddd dd MMMM", 
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Friday 29 August
Console.WriteLine(date1.ToString("dddd dd MMMM", 
                  CultureInfo.CreateSpecificCulture("it-IT")));
// Displays venerdì 29 agosto                                


返回表首

“s”自定义格式说明符将秒表示为从 0 到 59 的数字。 结果表示自上一分钟以来经过的整秒数。 一位数字的秒数设置为不带前导零的格式。

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

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

DateTime date1; 
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1 μ                        
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5 μ


返回表首

“ss”自定义格式说明符(以及任意数量的附加“s”说明符)将秒表示为从 00 到 59 的数字。 结果表示自上一分钟以来经过的整秒数。 一位数字的秒数设置为带前导零的格式。

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

DateTime date1; 
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt", 
                  CultureInfo.InvariantCulture));
// Displays 06:09:01 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss tt", 
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", 
                  CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", 
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.


返回表首

“t”自定义格式说明符表示 AM/PM 指示符的第一个字符。 相应的本地化指示符通过当前或特定区域性的 DateTimeFormatInfo.AMDesignatorDateTimeFormatInfo.PMDesignator 属性进行检索。 AM 指示符用于自 0:00:00(午夜)到 11:59:59.999 的所有时间。 PM 指示符用于自 12:00:00(中午)到 23:59:59.999 的所有时间。

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

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

DateTime date1; 
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1 μ                        
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t", 
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5 μ


返回表首

“tt”自定义格式说明符(以及任意数量的附加“t”说明符)表示整个 AM/PM 指示符。 相应的本地化指示符通过当前或特定区域性的 DateTimeFormatInfo.AMDesignatorDateTimeFormatInfo.PMDesignator 属性进行检索。 AM 指示符用于自 0:00:00(午夜)到 11:59:59.999 的所有时间。 PM 指示符用于自 12:00:00(中午)到 23:59:59.999 的所有时间。

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

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

DateTime date1; 
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt", 
                  CultureInfo.InvariantCulture));
// Displays 06:09:01 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss tt", 
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", 
                  CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", 
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.


返回表首

“y”自定义格式说明符将年份表示为一位或两位数字。 如果年份多于两位数,则结果中仅显示两位低位数。 如果两位数字的年份的第一个数字以零开始(例如,2008),则该数字设置为不带前导零的格式。

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

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

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010      
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010      


返回表首

“yy”自定义格式说明符将年份表示为一位或两位数字。 如果年份多于两位数,则结果中仅显示两位低位数。 如果两位数年份的有效数字少于两个,则用前导零填充该数字以产生两位数。

在分析操作中,使用“yy”自定义格式说明符分析的两位数年份是基于格式提供程序的当前日历的 Calendar.TwoDigitYearMax 属性被释义的。 下面的示例通过使用默认 zh-cn 区域性(在这种情况下为当前区域性)的公历来分析具有二位数年份的日期的字符串表示形式。 然后,它将更改当前区域的 CultureInfo 对象以便使用其 TwoDigitYearMax 属性已更改的 GregorianCalendar 对象。

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      string fmt = "dd-MMM-yy";
      string value = "24-Jan-49";

      Calendar cal = (Calendar) CultureInfo.CurrentCulture.Calendar.Clone();
      Console.WriteLine("Two Digit Year Range: {0} - {1}", 
                        cal.TwoDigitYearMax - 99, cal.TwoDigitYearMax);

      Console.WriteLine("{0:d}", DateTime.ParseExact(value, fmt, null));
      Console.WriteLine();

      cal.TwoDigitYearMax = 2099;
      CultureInfo culture = (CultureInfo) CultureInfo.CurrentCulture.Clone();
      culture.DateTimeFormat.Calendar = cal;
      Thread.CurrentThread.CurrentCulture = culture;

      Console.WriteLine("Two Digit Year Range: {0} - {1}", 
                        cal.TwoDigitYearMax - 99, cal.TwoDigitYearMax);
      Console.WriteLine("{0:d}", DateTime.ParseExact(value, fmt, null));
   }
}
// The example displays the following output:
//       Two Digit Year Range: 1930 - 2029
//       1/24/1949
//       
//       Two Digit Year Range: 2000 - 2099
//       1/24/2049


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

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010      
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010      


返回表首

“yyy”自定义格式说明符至少使用三位数字表示年份。 如果年份的有效数字多于三个,则将它们包括在结果字符串中。 如果年份少于三位数,则用前导零填充该数字以产生三位数。

说明 说明

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

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

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010      
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010      


返回表首

“yyyy”自定义格式说明符至少使用四位数字表示年份。 如果年份的有效数字多于四个,则将它们包括在结果字符串中。 如果年份少于四位数,则用前导零填充该数字使其达到四位数。

说明 说明

对于年份可以为五位数的泰国佛历,此格式说明符将最少显示四位数字。

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

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010      
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010      


返回表首

“yyyyy”自定义格式说明符(以及任意数量的附加“y”说明符)最少将年份表示为五位数字。 如果年份的有效数字多于五个,则将它们包括在结果字符串中。 如果年份少于五位数,则用前导零填充该数字以产生五位数。

如果存在额外的“y”说明符,则用所需个数的前导零填充该数字以产生“y”说明符的数目。

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

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010      
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010      


返回表首

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

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

偏移量始终显示为带有前导符号。 加号 (+) 指示早于 UTC 的小时数,减号 (-) 指示晚于 UTC 的小时数。 一位数字的偏移量设置为不带前导零的格式。

如果使用“z”格式说明符而没有其他自定义格式说明符,则将该说明符解释为标准日期和时间格式说明符,并引发 FormatException 有关使用单个格式说明符的更多信息,请参见此主题后面的使用单个自定义格式说明符

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

DateTime date1 = DateTime.UtcNow;
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", 
                  date1));
// Displays -7, -07, -07:00                     

DateTimeOffset date2 = new DateTimeOffset(2008, 8, 1, 0, 0, 0, 
                                          new TimeSpan(6, 0, 0));
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", 
                  date2));
// Displays +6, +06, +06:00


返回表首

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

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

偏移量始终显示为带有前导符号。 加号 (+) 指示早于 UTC 的小时数,减号 (-) 指示晚于 UTC 的小时数。 一位数字的偏移量设置为带前导零的格式。

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

DateTime date1 = DateTime.UtcNow;
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", 
                  date1));
// Displays -7, -07, -07:00                     

DateTimeOffset date2 = new DateTimeOffset(2008, 8, 1, 0, 0, 0, 
                                          new TimeSpan(6, 0, 0));
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", 
                  date2));
// Displays +6, +06, +06:00


返回表首

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

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

偏移量始终显示为带有前导符号。 加号 (+) 指示早于 UTC 的小时数,减号 (-) 指示晚于 UTC 的小时数。 一位数字的偏移量设置为带前导零的格式。

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

DateTime date1 = DateTime.UtcNow;
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", 
                  date1));
// Displays -7, -07, -07:00                     

DateTimeOffset date2 = new DateTimeOffset(2008, 8, 1, 0, 0, 0, 
                                          new TimeSpan(6, 0, 0));
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", 
                  date2));
// Displays +6, +06, +06:00


返回表首

“:”自定义格式说明符表示时间分隔符,它用于区分小时、分钟和秒。 相应的本地化时间分隔符通过当前或指定区域性的 DateTimeFormatInfo.TimeSeparator 属性进行检索。

如果使用“:”格式说明符而没有其他自定义格式说明符,则将该说明符解释为标准日期和时间格式说明符,并引发 FormatException 有关使用单个格式说明符的更多信息,请参见此主题后面的使用单个自定义格式说明符

返回表首

“/”自定义格式说明符表示日期分隔符,它用于区分年、月和日。 相应的本地化日期分隔符检索自当前或指定区域性的 DateTimeFormatInfo.DateSeparator 属性。

如果使用“/”格式说明符而没有其他自定义格式说明符,则将该说明符解释为标准日期和时间格式说明符,并引发 FormatException 有关使用单个格式说明符的更多信息,请参见此主题后面的使用单个自定义格式说明符

返回表首

8kb3ddd4.collapse_all(zh-cn,VS.110).gif使用单个自定义格式说明符

自定义日期和时间格式字符串由两个或更多字符组成。 日期和时间格式设置方法将任何单字符字符串解释标准日期和时间格式字符串。 如果它们无法将该字符识别为有效格式说明符,则会引发 FormatException 例如,仅包含说明符“h”的格式字符串解释为标准日期和时间格式字符串。 但是,在此特定情况下将引发异常,原因是不存在“h”标准日期和时间格式说明符。

若要将任何自定义日期和时间格式说明符作为格式字符串中的唯一说明符使用(即若要使用“d”、“f”、“F”、“g”、“h”、“H”、“K”、“m”、“M”、“s”、“t”、“y”、“z”、“:”或“/”自定义格式说明符自身),请在该说明符之前或之后添加一个空格,或在单个自定义日期和时间说明符之前包括一个百分号(“%”)格式说明符。

例如,“%h"”将被解释为一个自定义日期和时间格式字符串,用于显示当前日期和时间值表示的小时。 也可以使用“ h”或“h ”格式字符串,尽管它在结果字符串及小时中包含一个空格。 下面的示例阐释了这三个格式字符串。

DateTime dat1 = new DateTime(2009, 6, 15, 13, 45, 0);

Console.WriteLine("'{0:%h}'", dat1);
Console.WriteLine("'{0: h}'", dat1);
Console.WriteLine("'{0:h }'", dat1);
// The example displays the following output:
//       '1'
//       ' 1'
//       '1 '


8kb3ddd4.collapse_all(zh-cn,VS.110).gif使用转义字符

格式字符串中的“d”、“f”、“F”、“g”、“h”、“H”、“K”、“m”、“M”、“s”、“t”、“y”、“z”、“:”或“/”字符被解释为自定义格式说明符而不是文本字符。 若要防止某个字符被解释为格式说明符,你可以在该字符前面加上反斜杠 (\)(即转义字符)。 转义字符表示以下字符为应包含在未更改的结果字符串中的字符文本。

若要在结果字符串中包括反斜杠,你必须再使用一个反斜杠对其进行转义 (\\)。

说明 说明

一些编译器(如 C++ 和 C# 编译器)也可能会将单个反斜杠字符解释为转义字符。 若要确保在设置格式时正确解释字符串,在 C# 中,可以在字符串之前使用原义字符串文本字符(@ 字符),或者在 C# 和 C++ 中,在每个反斜杠之前另外添加一个反斜杠字符。 下面的 C# 示例阐释了这两种方法。

下面的示例使用转义字符,以防止格式设置操作将“h”和“m”字符解释为格式说明符。

DateTime date = new DateTime(2009, 06, 15, 13, 45, 30, 90);
string fmt1 = "h \\h m \\m";
string fmt2 = @"h \h m \m";

Console.WriteLine("{0} ({1}) -> {2}", date, fmt1, date.ToString(fmt1));
Console.WriteLine("{0} ({1}) -> {2}", date, fmt2, date.ToString(fmt2));
// The example displays the following output:
//       6/15/2009 1:45:30 PM (h \h m \m) -> 1 h 45 m
//       6/15/2009 1:45:30 PM (h \h m \m) -> 1 h 45 m      


8kb3ddd4.collapse_all(zh-cn,VS.110).gif控制面板设置

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

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

8kb3ddd4.collapse_all(zh-cn,VS.110).gifDateTimeFormatInfo 属性

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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多