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” 標準日期和時間格式字串的自定義格式字串。 如果的值 format
是任何其他標準格式字串,則 SetAllDateTimePatterns 方法會擲回 ArgumentException。
如果您的自定義日期和時間格式字串包含日期分隔符,您應該明確指定日期分隔符,而不是依賴以特定日期分隔符取代 “/” 自定義格式規範的剖析或格式化方法。 例如,若要取得MM-DD-yy模式,請使用模式 “MM-DD-yyyy”。