标准日期和时间格式字符串将使用单个格式说明符来定义日期和时间值的文本表示形式。 任何日期和时间格式字符串,它包含多个包括空格的字符,则被解释为自定义日期和时间格式字符串 ; 有关更多的信息,请参阅 自定义日期和时间格式字符串 标准或自定义格式字符串的信息,请使用两种方法:
-
若要定义格式设置操作的结果字符串。
-
若要定义的文本表示形式的日期和时间值可以转换为一个 DateTime或 DateTimeOffset值,通过 分析的操作。
标准日期和时间格式字符串可以与 DateTime 和 DateTimeOffset 值一起使用。
下表描述了标准日期和时间格式说明符。 除非另行说明,否则,特定的标准日期和时间格式说明符将产生相同的字符串表示形式,这与它是与 DateTime 值还是 DateTimeOffset 值一起使用无关。 有关使用标准日期和时间格式字符串的其他信息,请参见注释部分。
格式说明符 |
说明 |
示例 |
---|---|---|
"d" |
短日期模式。 有关更多信息,请参见短日期(“d”)格式说明符。 |
6/15/2009 1:45:30 PM -> 6/15/2009 (en-US) 6/15/2009 1:45:30 PM -> 15/06/2009 (fr-FR) 6/15/2009 1:45:30 PM -> 2009/06/15 (ja-JP) |
“D” |
长日期模式。 有关更多信息,请参见长日期(“D”)格式说明符。 |
6/15/2009 1:45:30 PM -> Monday,June 15,2009 (en-US) 6/15/2009 1:45:30 PM -> 15 июня 2009 г。 (ru-RU) 6/15/2009 1:45:30 PM -> Montag,15。 Juni 2009 (de-DE) |
“f” |
完整日期/时间模式(短时间)。 有关更多信息,请参见完整日期短时间(“f”)格式说明符。 |
6/15/2009 1:45:30 PM -> Monday,2009 1:45 PM (en-US) 6/15/2009 1:45:30 PM -> den 15 juni 2009 13:45 (sv-SE) 6/15/2009 1:45:30 PM -> Δευτέρα,15 Ιουνίου 2009 1:45 μμ (el-GR) |
"F" |
完整日期/时间模式(长时间)。 更多信息:完整日期长时间("F")格式说明符。 |
6/15/2009 1:45:30 PM -> Monday,2009 1:45:30 PM (en-US) 6/15/2009 1:45:30 PM -> den 15 juni 2009 13:45:30 (sv-SE) 6/15/2009 1:45:30 PM -> Δευτέρα,15 Ιουνίου 2009 1:45:30 μμ (el-GR) |
"g" |
常规日期/时间模式(短时间)。 更多信息:常规日期短时间("g")格式说明符。 |
6/15/2009 1:45:30 PM -> 6/15/2009 1:45 PM (en-US) 6/15/2009 1:45:30 PM -> 15/06/2009 13:45 (es-ES) 6/15/2009 1:45:30 PM -> 2009/6/15 13:45 (zh-CN) |
“G” |
常规日期/时间模式(长时间)。 有关更多信息,请参见常规日期长时间(“G”)格式说明符。 |
6/15/2009 1:45:30 PM -> 6/15/2009 1:45:30 PM (en-US) 6/15/2009 1:45:30 PM -> 15/06/2009 13:45:30 (es-ES) 6/15/2009 1:45:30 PM -> 2009/6/15 13:45:30 (zh-CN) |
“M”、“m” |
@H_808_301@月/日模式。 有关更多信息,请参见月(“M”、“m”)格式说明符。 |
6/15/2009 1:45:30 PM -> June 15 (en-US) 6/15/2009 1:45:30 PM -> 15。 juni (da-DK) 6/15/2009 1:45:30 PM -> 15 Juni (id-ID) |
@H_301_329@“O”、“o” |
往返日期/时间模式。 有关更多信息,请参见往返(“O”、“o”)格式说明符。 |
6/15/2009 1:45:30 PM -> 2009-06-15T13:45:30.0900000 |
“R”、“r” |
RFC1123 模式。 有关更多信息,请参见 RFC1123(“R”、“r”)格式说明符。 |
6/15/2009 1:45:30 PM -> Mon,15 Jun 2009 20:45:30 GMT |
“s” |
可排序日期/时间模式。 有关更多信息,请参见可排序(“s”)格式说明符。 |
6/15/2009 1:45:30 PM -> 2009-06-15T13:45:30 |
“t” |
短时间模式。 有关更多信息,请参见短时间(“t”)格式说明符。 |
6/15/2009 1:45:30 PM -> 1:45 PM (en-US) 6/15/2009 1:45:30 PM -> 13:45 (hr-HR) 6/15/2009 1:45:30 PM -> 01:45 م (ar-EG) |
"T" |
长时间模式。 更多信息:长时间("T")格式说明符。 |
6/15/2009 1:45:30 PM -> 1:45:30 PM (en-US) 6/15/2009 1:45:30 PM -> 13:45:30 (hr-HR) 6/15/2009 1:45:30 PM -> 01:45:30 م (ar-EG) |
"u" |
通用的可排序日期/时间模式。 更多信息:通用的可排序("u")格式说明符。 |
6/15/2009 1:45:30 PM -> 2009-06-15 20:45:30Z |
“U” |
通用完整日期/时间模式。 有关更多信息,请参见通用完整(“U”)格式说明符。 |
6/15/2009 1:45:30 PM -> Monday,2009 8:45:30 PM (en-US) 6/15/2009 1:45:30 PM -> den 15 juni 2009 20:45:30 (sv-SE) 6/15/2009 1:45:30 PM -> Δευτέρα,15 Ιουνίου 2009 8:45:30 μμ (el-GR) |
"Y"、"y" |
年月模式。 更多信息:年月("Y")格式说明符。 |
6/15/2009 1:45:30 PM -> June,2009 (en-US) 6/15/2009 1:45:30 PM -> juni 2009 (da-DK) 6/15/2009 1:45:30 PM -> Juni 2009 (id-ID) |
任何其他单个字符 |
未知说明符。 |
引发运行时 FormatException。 |
一种格式设置操作中的标准格式字符串是只是一个自定义格式字符串的别名。 使用别名引用自定义格式字符串的优点是:尽管别名保持固定不变,自定义格式字符串自身也可以变化。 这很重要,因为日期和时间值的字符串表示形式通常会因区域性而异。 例如,“d”标准格式字符串指示应使用短日期模式显示日期和时间值。 对于固定区域性,此模式为“MM/dd/yyyy”。 对于 fr-FR 区域性,此模式为“dd/MM/yyyy”。 对于 ja-JP 区域性,此模式为“yyyy/MM/dd”。
标准格式字符串格式设置操作中的将映射到特定区域性的自定义格式字符串中,如果您的应用程序可以定义特定区域性使用的自定义格式字符串,这些方法之一:
-
可使用默认的(或当前的)区域性。 下面的示例使用当前区域性的短日期格式显示日期。 在此情况下,当前区域性为 en-US。
-
可以传递一个表示区域性的 CultureInfo 对象,该区域性的格式设置将用于具有 IFormatProvider 参数的方法。 下面的示例使用 pt-BR 区域性的短日期格式显示日期。
-
可以传递一个 DateTimeFormatInfo 对象,该对象向具有 IFormatProvider 参数的方法提供格式设置信息。 下面的示例使用 hr-HR 区域性的 DateTimeFormatInfo 对象中的短日期格式显示日期。
某些情况下,标准格式字符串用作固定不变的较长自定义格式字符串的简便缩写。 有四个标准格式字符串属于这一类别:“O”(或“o”)、“R”(或“r”)、“s”和“u”。 这些字符串对应于由固定区域性定义的自定义格式字符串。 通过这些字符串得到的日期和时间值的字符串表示形式在各个区域性中都应是相同的。 下表提供了有关这四个标准日期和时间格式字符串的信息。
标准格式字符串 |
由 DateTimeFormatInfo.InvariantInfo 属性定义 |
自定义格式字符串 |
---|---|---|
“O”或“o” |
无 |
yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzz |
“R”或“r” |
ddd,dd MMM yyyy HH':'mm':'ss 'GMT' |
|
“s” |
yyyy'-'MM'-'dd'T'HH':'mm':'ss |
|
“u” |
yyyy'-'MM'-'dd HH':'mm':'ss'Z' |
也可以使用标准格式字符串中分析操作使用 DateTime.ParseExact或 DateTimeOffset.ParseExact需要完全符合特定模式的分析操作成功的输入的字符串的方法 Many standard format strings map to multiple custom format strings,so a date and time value can be represented in a variety of formats and the parse operation will still succeed. You can determine the custom format string or strings that correspond to a standard format string by calling the DateTimeFormatInfo.GetAllDateTimePatterns(Char) method. The following example displays the custom format strings that map to the "d" (short date pattern) standard format string.
using System; using System.Globalization; public class Example { public static void Main() { Console.WriteLine("'d' standard format string:"); foreach (var customString in DateTimeFormatInfo.CurrentInfo.GetAllDateTimePatterns('d')) Console.WriteLine(" {0}",customString); } } // The example displays the following output: // 'd' standard format string: // M/d/yyyy // M/d/yy // MM/dd/yy // MM/dd/yyyy // yy/MM/dd // yyyy-MM-dd // dd-MMM-yy
以下几节描述了 DateTime 和 DateTimeOffset 值的标准格式说明符。
“d”标准格式说明符表示通过特定区域性的 DateTimeFormatInfo.ShortDatePattern 属性定义的自定义日期和时间格式字符串。 例如,由固定区域性的 ShortDatePattern 属性返回的自定义格式字符串为“MM/dd/yyyy”。
下表列出用于控制返回字符串格式的 DateTimeFormatInfo 对象属性。
说明 |
|
---|---|
定义结果字符串的总体格式。 |
|
定义用于分隔日期中年、月、日部分的字符串。 |
下面的示例使用“d”格式说明符来显示日期和时间值。
DateTime date1 = new DateTime(2008,4,10); Console.WriteLine(date1.ToString("d",DateTimeFormatInfo.InvariantInfo)); // Displays 04/10/2008 Console.WriteLine(date1.ToString("d",CultureInfo.CreateSpecificCulture("en-US"))); // Displays 4/10/2008 Console.WriteLine(date1.ToString("d",CultureInfo.CreateSpecificCulture("en-NZ"))); // Displays 10/04/2008 Console.WriteLine(date1.ToString("d",CultureInfo.CreateSpecificCulture("de-DE"))); // Displays 10.04.2008
“D”标准格式说明符表示由当前的 DateTimeFormatInfo.LongDatePattern 属性定义的自定义日期和时间格式字符串。 例如,用于固定区域性的自定义格式字符串为“dddd,dd MMMM yyyy”。
下表列出了用于控制返回字符串格式的 DateTimeFormatInfo 对象的属性。
下面的示例使用“D”格式说明符来显示日期和时间值。
DateTime date1 = new DateTime(2008,10); Console.WriteLine(date1.ToString("D",CultureInfo.CreateSpecificCulture("en-US"))); // Displays Thursday,April 10,2008 Console.WriteLine(date1.ToString("D",CultureInfo.CreateSpecificCulture("pt-BR"))); // Displays quinta-feira,10 de abril de 2008 Console.WriteLine(date1.ToString("D",CultureInfo.CreateSpecificCulture("es-MX"))); // Displays jueves,10 de abril de 2008
“f”标准格式说明符表示长日期(“D”)和短时间(“t”)模式的组合,由空格分隔。
结果字符串受特定 DateTimeFormatInfo 对象的格式信息的影响。 下表列出了 DateTimeFormatInfo 对象属性,这些属性可控制返回字符串的格式。 @H_174_1301@由某些区域性的 DateTimeFormatInfo.LongDatePattern 和 DateTimeFormatInfo.ShortTimePattern 属性返回的自定义格式说明符可能未利用所有属性。
说明 |
|
---|---|
定义结果字符串中日期部分的格式。 |
|
定义结果字符串中时间部分的格式。 |
|
定义可在结果字符串中出现的本地化日名称。 |
|
定义可在结果字符串中出现的本地化月份名称。 |
|
定义分隔时间中小时、分钟和秒钟几个组成部分的字符串。 |
|
@H_844_1404@定义以 12 小时时钟制表示午夜至正午之前这段时间的字符串。 |
|
定义以 12 小时时钟制表示正午至午夜之前这段时间的字符串。 |
下面的示例使用“f”格式说明符来显示日期和时间值。
“F”标准格式说明符表示由当前的 DateTimeFormatInfo.FullDateTimePattern 属性定义的自定义日期和时间格式字符串。 例如,用于固定区域性的自定义格式字符串为“dddd,dd MMMM yyyy HH:mm:ss”。
下表列出了 DateTimeFormatInfo 对象属性,这些属性可控制返回字符串的格式。 由某些区域性的 FullDateTimePattern 属性返回的自定义格式说明符可能未利用所有属性。
说明 |
|
---|---|
定义结果字符串的总体格式。 |
|
定义可在结果字符串中出现的本地化日名称。 |
|
定义可在结果字符串中出现的本地化月份名称。 |
|
定义分隔时间中小时、分钟和秒钟几个组成部分的字符串。 |
|
定义以 12 小时时钟制表示午夜至正午之前这段时间的字符串。 |
|
定义以 12 小时时钟制表示正午至午夜之前这段时间的字符串。 |
下面的示例使用“F”格式说明符来显示日期和时间值。
“g”标准格式说明符表示短日期(“d”)和短时间(“t”)模式的组合,由空格分隔。
结果字符串受特定 DateTimeFormatInfo 对象的格式信息的影响。 下表列出了 DateTimeFormatInfo 对象属性,这些属性可控制返回字符串的格式。 由某些区域性的 DateTimeFormatInfo.ShortDatePattern 和 DateTimeFormatInfo.ShortTimePattern 属性返回的自定义格式说明符可能未利用所有属性。
说明 |
|
---|---|
定义结果字符串中日期部分的格式。 |
|
定义结果字符串中时间部分的格式。 |
|
定义用于分隔日期中年、月、日部分的字符串。 |
|
定义分隔时间中小时、分钟和秒钟几个组成部分的字符串。 |
|
定义以 12 小时时钟制表示午夜至正午之前这段时间的字符串。 |
|
定义以 12 小时时钟制表示正午至午夜之前这段时间的字符串。 |
下面的示例使用“g”格式说明符来显示日期和时间值。
DateTime date1 = new DateTime(2008,0); Console.WriteLine(date1.ToString("g",DateTimeFormatInfo.InvariantInfo)); // Displays 04/10/2008 06:30 Console.WriteLine(date1.ToString("g",CultureInfo.CreateSpecificCulture("en-us"))); // Displays 4/10/2008 6:30 AM Console.WriteLine(date1.ToString("g",CultureInfo.CreateSpecificCulture("fr-BE"))); // Displays 10/04/2008 6:30
“G”标准格式说明符表示短日期(“d”)和长时间(“T”)模式的组合,由空格分隔。
结果字符串受特定 DateTimeFormatInfo 对象的格式信息的影响。 下表列出了 DateTimeFormatInfo 对象属性,这些属性可控制返回字符串的格式。 由某些区域性的 DateTimeFormatInfo.ShortDatePattern 和 DateTimeFormatInfo.LongTimePattern 属性返回的自定义格式说明符可能未利用所有属性。
说明 |
|
---|---|
定义结果字符串中日期部分的格式。 |
|
定义结果字符串中时间部分的格式。 |
|
定义用于分隔日期中年、月、日部分的字符串。 |
|
定义分隔时间中小时、分钟和秒钟几个组成部分的字符串。 |
|
定义以 12 小时时钟制表示午夜至正午之前这段时间的字符串。 |
|
定义以 12 小时时钟制表示正午至午夜之前这段时间的字符串。 |
下面的示例使用“G”格式说明符来显示日期和时间值。
DateTime date1 = new DateTime(2008,0); Console.WriteLine(date1.ToString("G",DateTimeFormatInfo.InvariantInfo)); // Displays 04/10/2008 06:30:00 Console.WriteLine(date1.ToString("G",CultureInfo.CreateSpecificCulture("en-us"))); // Displays 4/10/2008 6:30:00 AM Console.WriteLine(date1.ToString("G",CultureInfo.CreateSpecificCulture("nl-BE"))); // Displays 10/04/2008 6:30:00
“M”或“m”标准格式说明符表示由当前的 DateTimeFormatInfo.MonthDayPattern 属性定义的自定义日期和时间格式字符串。 例如,用于固定区域性的自定义格式字符串为“MMMM dd”。
下表列出用于控制返回字符串格式的 DateTimeFormatInfo 对象属性。
说明 |
|
---|---|
定义结果字符串的总体格式。 |
|
定义可在结果字符串中出现的本地化月份名称。 |
下面的示例使用“m”格式说明符来显示日期和时间值。
“O”或“o”标准格式说明符表示使用保留时区信息的模式的自定义日期和时间格式字符串。 对于 DateTime 值,此格式说明符设计用于在文本中将日期和时间值与 DateTime.Kind 属性一起保留。 如果将 styles 参数设置为 DateTimeStyles.RoundtripKind,则可通过使用 DateTime.Parse(String,IFormatProvider,DateTimeStyles) 或 DateTime.ParseExact 方法对格式化的字符串进行反向分析。
对于 DateTime 值,“O”或“o”标准格式说明符对应于“yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK”自定义格式字符串,对于 DateTimeOffset 值,“O”或“o”标准格式说明符则对应于“yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz”自定义格式字符串。 在此字符串中,分隔各个字符(例如连字符、冒号和字母“T”)的单引号标记对指示各个字符是不能更改的文本。 撇号不会出现在输出字符串中。
此说明符的模式反映了已制定的标准 (ISO 8601)。 因此,无论所使用的区域性或所提供的格式提供程序是什么,它总是相同的。 传递给 Parse 或 ParseExact 方法的字符串必须与此定义格式模式完全符合,否则,将引发 FormatException。
当使用此标准格式说明符时,格式设置或分析操作始终使用固定区域性。
下面的示例使用“o”格式说明符在美国太平洋时区中的系统上显示 DateTime 和 DateTimeOffset 值 。
DateTime date1 = new DateTime(2008,0); DateTimeOffset dateOffset = new DateTimeOffset(date1,TimeZoneInfo.Local.GetUtcOffset(date1)); Console.WriteLine(date1.ToString("o")); // Displays 2008-04-10T06:30:00.0000000 Console.WriteLine(dateOffset.ToString("o")); // Displays 2008-04-10T06:30:00.0000000-07:00
下面的示例使用“O”格式说明符创建格式字符串,然后通过调用日期和时间 Parse 方法还原原始日期和时间值。
// Round-trip DateTime values. DateTime originalDate,newDate; string dateString; // Round-trip a local time. originalDate = DateTime.SpecifyKind(new DateTime(2008,0),DateTimeKind.Local); dateString = originalDate.ToString("o"); newDate = DateTime.Parse(dateString,null,DateTimeStyles.RoundtripKind); Console.WriteLine("Round-tripped {0} {1} to {2} {3}.",originalDate,originalDate.Kind,newDate,newDate.Kind); // Round-trip a UTC time. originalDate = DateTime.SpecifyKind(new DateTime(2008,12,9,DateTimeKind.Utc); dateString = originalDate.ToString("o"); newDate = DateTime.Parse(dateString,newDate.Kind); // Round-trip time in an unspecified time zone. originalDate = DateTime.SpecifyKind(new DateTime(2008,13,DateTimeKind.Unspecified); dateString = originalDate.ToString("o"); newDate = DateTime.Parse(dateString,newDate.Kind); // Round-trip a DateTimeOffset value. DateTimeOffset originalDTO = new DateTimeOffset(2008,new TimeSpan(-8,0)); dateString = originalDTO.ToString("o"); DateTimeOffset newDTO = DateTimeOffset.Parse(dateString,DateTimeStyles.RoundtripKind); Console.WriteLine("Round-tripped {0} to {1}.",originalDTO,newDTO); // The example displays the following output: // Round-tripped 4/10/2008 6:30:00 AM Local to 4/10/2008 6:30:00 AM Local. // Round-tripped 4/12/2008 9:30:00 AM Utc to 4/12/2008 9:30:00 AM Utc. // Round-tripped 4/13/2008 12:30:00 PM Unspecified to 4/13/2008 12:30:00 PM Unspecified. // Round-tripped 4/12/2008 9:30:00 AM -08:00 to 4/12/2008 9:30:00 AM -08:00.
“R”或“r”标准格式说明符表示由 DateTimeFormatInfo.RFC1123Pattern 属性定义的自定义日期和时间格式字符串。 该模式反映已定义的标准,并且属性是只读的。 @H_833_2403@因此,无论所使用的区域性或所提供的格式提供程序是什么,它总是相同的。 定义格式字符串为“ddd,dd MMM yyyy HH':'mm':'ss 'GMT'”。 当使用此标准格式说明符时,格式设置或分析操作始终使用固定区域性。
结果字符串受由 DateTimeFormatInfo.InvariantInfo 属性(该属性表示固定区域性)返回的 DateTimeFormatInfo 对象的下列属性的影响。
尽管 RFC 1123 标准将时间表示为协调世界时 (UTC),格式设置操作也不会修改正在格式化的 DateTime 或 DateTimeOffset 对象的值。 因此,应用程序在执行格式设置操作之前必须将日期和时间值转换为 UTC。 若要执行此转换,DateTime 值可以调用 DateTime.ToUniversalTime 方法,DateTimeOffset 值可以调用 ToUniversalTime 方法。
下面的示例使用“r”格式说明符在美国太平洋时区中的系统上显示 DateTime 和 DateTimeOffset 值 。
“s”标准格式说明符表示由 DateTimeFormatInfo.SortableDateTimePattern 属性定义的自定义日期和时间格式字符串。 该模式反映已定义的标准 (ISO 8601),并且属性是只读的。 因此,无论所使用的区域性或所提供的格式提供程序是什么,它总是相同的。 自定义格式字符串为“yyyy'-'MM'-'dd'T'HH':'mm':'ss”。
当使用此标准格式说明符时,格式设置或分析操作始终使用固定区域性。
下面的示例使用“s”格式说明符在美国太平洋时区中的系统上显示 DateTime 和 DateTimeOffset 值 。
“t”标准格式说明符表示由当前的 DateTimeFormatInfo.ShortTimePattern 属性定义的自定义日期和时间格式字符串。 例如,用于固定区域性的自定义格式字符串为“HH:mm”。
结果字符串受特定 DateTimeFormatInfo 对象的格式信息的影响。 下表列出了 DateTimeFormatInfo 对象属性,这些属性可控制返回字符串的格式。 由某些区域性的 DateTimeFormatInfo.ShortTimePattern 属性返回的自定义格式说明符可能未利用所有属性。
说明 |
|
---|---|
定义结果字符串中时间部分的格式。 |
|
定义分隔时间中小时、分钟和秒钟几个组成部分的字符串。 |
|
定义以 12 小时时钟制表示午夜至正午之前这段时间的字符串。 |
|
定义以 12 小时时钟制表示正午至午夜之前这段时间的字符串。 |
下面的示例使用“t”格式说明符来显示日期和时间值。
“T”标准格式说明符表示由特定区域性的 DateTimeFormatInfo.LongTimePattern 属性定义的自定义日期和时间格式字符串。 例如,用于固定区域性的自定义格式字符串为“HH:mm:ss”。
下表列出了 DateTimeFormatInfo 对象属性,这些属性可控制返回字符串的格式。 由某些区域性的 DateTimeFormatInfo.LongTimePattern 属性返回的自定义格式说明符可能未利用所有属性。
说明 |
|
---|---|
定义结果字符串中时间部分的格式。 |
|
定义分隔时间中小时、分钟和秒钟几个组成部分的字符串。 |
|
定义以 12 小时时钟制表示午夜至正午之前这段时间的字符串。 |
|
定义以 12 小时时钟制表示正午至午夜之前这段时间的字符串。 |
下面的示例使用“T”格式说明符来显示日期和时间值。
“u”标准格式说明符表示由 DateTimeFormatInfo.UniversalSortableDateTimePattern 属性定义的自定义日期和时间格式字符串。 该模式反映已定义的标准,并且属性是只读的。 因此,无论所使用的区域性或所提供的格式提供程序是什么,它总是相同的。 自定义格式字符串为“yyyy'-'MM'-'dd HH':'mm':'ss'Z'”。 当使用此标准格式说明符时,格式设置或分析操作始终使用固定区域性。
尽管结果字符串应将时间表达为协调世界时 (UTC),但在格式设置操作过程中不执行原始 DateTime 或 DateTimeOffset 值转换。 因此,应用程序在对日期和时间值进行格式设置之前必须将其转换为 UTC。 若要执行此转换,DateTime 值可以调用 DateTime.ToUniversalTime 方法,DateTimeOffset 值可以调用 ToUniversalTime 方法
下面的示例使用“u”格式说明符来显示日期和时间值。
“U”标准格式说明符表示由特定区域性的 DateTimeFormatInfo.FullDateTimePattern 属性定义的自定义日期和时间格式字符串。 此模式与“F”模式相同。 但是,在对 DateTime 值进行格式设置之前,该值自动转换为 UTC。
下表列出了 DateTimeFormatInfo 对象属性,这些属性可控制返回字符串的格式。 由某些区域性的 FullDateTimePattern 属性返回的自定义格式说明符可能未利用所有属性。
说明 |
|
---|---|
定义结果字符串的总体格式。 |
|
定义可在结果字符串中出现的本地化日名称。 |
|
定义可在结果字符串中出现的本地化月份名称。 |
|
定义分隔时间中小时、分钟和秒钟几个组成部分的字符串。 |
|
定义以 12 小时时钟制表示午夜至正午之前这段时间的字符串。 |
|
定义以 12 小时时钟制表示正午至午夜之前这段时间的字符串。 |
DateTimeOffset 类型不支持“U”格式说明符。如果使用“U”格式说明符来设置 DateTimeOffset 值的格式,则将引发 FormatException。
下面的示例使用“U”格式说明符来显示日期和时间值。
“Y”或“y”标准格式说明符表示由指定区域性的 DateTimeFormatInfo.YearMonthPattern 属性定义的自定义日期和时间格式字符串。 例如,用于固定区域性的自定义格式字符串为“yyyy MMMM”。
下表列出用于控制返回字符串格式的 DateTimeFormatInfo 对象属性。
说明 |
|
---|---|
定义结果字符串的总体格式。 |
|
定义可在结果字符串中出现的本地化月份名称。 |
下面的示例使用“y”格式说明符来显示日期和时间值。
控制面板设置
控制面板中“区域和语言选项”项中的设置会影响由格式化操作产生的结果字符串。 这些设置用于初始化与当前线程区域性关联的 DateTimeFormatInfo 对象,当前线程区域性提供用于控制格式设置的值。 使用不同设置的计算机将生成不同的结果字符串。
此外,如果使用 CultureInfo.CultureInfo(String) 构造函数实例化一个新的 CultureInfo 对象以表示与当前的系统区域性相同的区域性,则通过控制面板中的“区域和语言选项”建立的任何自定义都将应用到新的 CultureInfo 对象。 可以使用 CultureInfo.CultureInfo(String,Boolean) 构造函数来创建不会反映系统的自定义项的 CultureInfo 对象。
DateTimeFormatInfo 属性
格式化受当前的 DateTimeFormatInfo 对象的属性影响,其由当前线程区域性隐式提供或由调用格式化的方法的 IFormatProvider 参数显式提供。 对于 IFormatProvider 参数,应用程序应指定一个表示区域性的 CultureInfo 对象或表示特定区域性的日期和时间格式设置约定的 DateTimeFormatInfo 对象。 许多标准日期和时间格式说明符是由当前的 DateTimeFormatInfo 对象的属性定义的格式设置模式的别名。 应用程序通过更改相应 DateTimeFormatInfo 属性的相应日期和时间格式模式,可以更改由某些标准日期和时间格式说明符产生的结果。