DateTimeFormatInfo.SetAllDateTimePatterns(String[], Char) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
设置对应于指定的标准格式字符串的自定义日期和时间格式字符串。
public:
void SetAllDateTimePatterns(cli::array <System::String ^> ^ patterns, char format);
public void SetAllDateTimePatterns (string[] patterns, char format);
[System.Runtime.InteropServices.ComVisible(false)]
public void SetAllDateTimePatterns (string[] patterns, char format);
member this.SetAllDateTimePatterns : string[] * char -> unit
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.SetAllDateTimePatterns : string[] * char -> unit
Public Sub SetAllDateTimePatterns (patterns As String(), format As Char)
参数
- patterns
- String[]
自定义格式字符串的数组。
- format
- Char
在 patterns
参数中指定的与自定格式字符串相关的标准格式字符串。
- 属性
例外
patterns
有一个值为 null
的数组元素。
此 DateTimeFormatInfo 对象是只读的。
示例
以下示例实例化一个CultureInfo对象,该对象表示“en-US” (英语 - 美国) 区域性,并使用它分析使用“Y”标准格式字符串的日期和时间字符串数组。 然后, SetAllDateTimePatterns 它使用 方法将新的自定义格式字符串与“Y”标准格式字符串相关联,然后尝试分析日期和时间字符串的数组。 该示例的输出演示了新的自定义格式字符串在分析和格式设置操作中使用。
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
// Use standard en-US culture.
CultureInfo enUS = new CultureInfo("en-US");
string[] values = { "December 2010", "December, 2010",
"Dec-2010", "December-2010" };
Console.WriteLine("Supported Y/y patterns for {0} culture:", enUS.Name);
foreach (var pattern in enUS.DateTimeFormat.GetAllDateTimePatterns('Y'))
Console.WriteLine(" " + pattern);
Console.WriteLine();
// Try to parse each date string using "Y" format specifier.
foreach (var value in values) {
try {
DateTime dat = DateTime.ParseExact(value, "Y", enUS);
Console.WriteLine(String.Format(enUS, " Parsed {0} as {1:Y}", value, dat));
}
catch (FormatException) {
Console.WriteLine(" Cannot parse {0}", value);
}
}
Console.WriteLine();
//Modify supported "Y" format.
enUS.DateTimeFormat.SetAllDateTimePatterns( new string[] { "MMM-yyyy" } , 'Y');
Console.WriteLine("New supported Y/y patterns for {0} culture:", enUS.Name);
foreach (var pattern in enUS.DateTimeFormat.GetAllDateTimePatterns('Y'))
Console.WriteLine(" " + pattern);
Console.WriteLine();
// Try to parse each date string using "Y" format specifier.
foreach (var value in values) {
try {
DateTime dat = DateTime.ParseExact(value, "Y", enUS);
Console.WriteLine(String.Format(enUS, " Parsed {0} as {1:Y}", value, dat));
}
catch (FormatException) {
Console.WriteLine(" Cannot parse {0}", value);
}
}
}
}
// The example displays the following output:
// Supported Y/y patterns for en-US culture:
// MMMM, yyyy
//
// Cannot parse December 2010
// Parsed December, 2010 as December, 2010
// Cannot parse Dec-2010
// Cannot parse December-2010
//
// New supported Y/y patterns for en-US culture:
// MMM-yyyy
//
// Cannot parse December 2010
// Cannot parse December, 2010
// Parsed Dec-2010 as Dec-2010
// Cannot parse December-2010
Imports System.Globalization
Module Example
Public Sub Main()
' Use standard en-US culture.
Dim enUS As New CultureInfo("en-US")
Dim values() As String = { "December 2010", "December, 2010",
"Dec-2010", "December-2010" }
Console.WriteLine("Supported Y/y patterns for {0} culture:", enUS.Name)
For Each pattern In enUS.DateTimeFormat.GetAllDateTimePatterns("Y"c)
Console.WriteLine(" " + pattern)
Next
Console.WriteLine()
' Try to parse each date string using "Y" format specifier.
For Each value In values
Try
Dim dat As Date = Date.ParseExact(value, "Y", enUS)
Console.WriteLine(String.Format(enUS, " Parsed {0} as {1:Y}", value, dat))
Catch e As FormatException
Console.WriteLine(" Cannot parse {0}", value)
End Try
Next
Console.WriteLine()
'Modify supported "Y" format.
enUS.DateTimeFormat.SetAllDateTimePatterns( { "MMM-yyyy" } , "Y"c)
Console.WriteLine("New supported Y/y patterns for {0} culture:", enUS.Name)
For Each pattern In enUS.DateTimeFormat.GetAllDateTimePatterns("Y"c)
Console.WriteLine(" " + pattern)
Next
Console.WriteLine()
' Try to parse each date string using "Y" format specifier.
For Each value In values
Try
Dim dat As Date = Date.ParseExact(value, "Y", enUS)
Console.WriteLine(String.Format(enUS, " Parsed {0} as {1:Y}", value, dat))
Catch e As FormatException
Console.WriteLine(" Cannot parse {0}", value)
End Try
Next
End Sub
End Module
' The example displays the following output:
' Supported Y/y patterns for en-US culture:
' MMMM, yyyy
'
' Cannot parse December 2010
' Parsed December, 2010 as December, 2010
' Cannot parse Dec-2010
' Cannot parse December-2010
'
' New supported Y/y patterns for en-US culture:
' MMM-yyyy
'
' Cannot parse December 2010
' Cannot parse December, 2010
' Parsed Dec-2010 as Dec-2010
' Cannot parse December-2010
注解
方法 SetAllDateTimePatterns 定义与特定标准日期和时间格式字符串对应的自定义格式字符串。 如果对日期和时间格式设置方法的调用包括由 format
指定的标准日期和时间格式字符串,该方法将使用数组中的 patterns
第一个元素来定义生成的字符串的格式。
警告
分析日期和时间的字符串表示形式时, Parse
和 TryParse
方法不会完全循环访问 中的所有 patterns
字符串。 如果需要日期和时间字符串在分析操作中具有特定格式,则应将有效格式的数组传递给 DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)、 DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles)、 DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)或 DateTimeOffset.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) 方法。
可以定义与“d”、“D”、“t”、“T”和“y”或“Y”标准日期和时间格式字符串对应的自定义格式字符串。 如果 的 format
值为任何其他标准格式字符串,该方法 SetAllDateTimePatterns 将 ArgumentException引发 。
如果自定义日期和时间格式字符串包含日期分隔符,则应显式指定日期分隔符,而不是依赖于将“/”自定义格式说明符替换为特定日期分隔符的分析或格式设置方法。 例如,若要获取模式 MM-DD-yyyyy,请使用模式“MM-DD-yyyy”。