标准日期和时间格式字符串将使用单个格式说明符来定义日期和时间值的文本表示形式。 任何日期和时间格式字符串,它包含多个包括空格的字符,则被解释为自定义日期和时间格式字符串 ; 有关更多的信息,请参阅 自定义日期和时间格式字符串 标准或自定义格式字符串的信息,请使用两种方法:
-
若要定义格式设置操作的结果字符串。
-
若要定义的文本表示形式的日期和时间值可以转换为一个 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_362_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) |
“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”。 这些字符串对应于由固定区域性定义的自定义格式字符串。 通过这些字符串得到的日期和时间值的字符串表示形式在各个区域性中都应是相同的。 @H_502_780@下表提供了有关这四个标准日期和时间格式字符串的信息。
标准格式字符串 |
由 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”格式说明符来显示日期和时间值。
@H_502_1070@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