DateTimeFormatInfo.SetAllDateTimePatterns(String[], Char) 方法

定義

設定對應於指定之標準格式字串的自訂日期和時間格式字串。Sets the custom date and time format strings that correspond to a specified standard format string.

public:
 void SetAllDateTimePatterns(cli::array <System::String ^> ^ patterns, char format);
[System.Runtime.InteropServices.ComVisible(false)]
public void SetAllDateTimePatterns (string[] patterns, char format);
member this.SetAllDateTimePatterns : string[] * char -> unit
Public Sub SetAllDateTimePatterns (patterns As String(), format As Char)

參數

patterns
String[]

自訂格式字串的陣列。An array of custom format strings.

format
Char

patterns 參數中所指定的自訂格式字串相關聯的標準格式字串。The standard format string associated with the custom format strings specified in the patterns parameter.

屬性

例外狀況

patternsnull 或長度為零的陣列。patterns is null or a zero-length array.

-或--or- format不是一個有效的標準格式字串,或者是不能設定形式的標準格式字串。format is not a valid standard format string or is a standard format string whose patterns cannot be set.

patternsnull 值的陣列元素。patterns has an array element whose value is null.

這個 DateTimeFormatInfo 物件是唯讀的。This DateTimeFormatInfo object is read-only.

範例

下列範例會具現CultureInfo化代表 "en-us" (英文)文化特性的物件,並使用它來剖析使用 "Y" 標準格式字串的日期和時間字串陣列。The following example instantiates a CultureInfo object that represents the "en-US" (English - United States) culture and uses it to parse an array of date and time strings using the "Y" standard format string. 然後,它會SetAllDateTimePatterns使用方法,將新的自訂格式字串與 "Y" 標準格式字串建立關聯,然後嘗試剖析日期和時間字串的陣列。It then uses the SetAllDateTimePatterns method to associate a new custom format string with the "Y" standard format string, and then attempts to parse the array of date and time strings. 範例的輸出示範在剖析和格式化作業中都使用新的自訂格式字串。Output from the example demonstrates that the new custom format string is used in both the parsing and formatting operations.

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方法會定義對應至特定標準日期和時間格式字串的自訂格式字串。The SetAllDateTimePatterns method defines the custom format strings that correspond to a particular standard date and time format string. 如果對日期和時間格式方法的呼叫包含指定format的標準日期和時間格式字串,則方法會使用patterns陣列中的第一個專案來定義產生之字串的格式。If a call to a date and time formatting method includes the standard date and time format string specified by format, the method uses the first element in the patterns array to define the format of the resulting string.

警告

剖析日期TryParse和時間的字串表示時patterns,和方法不會完全逐一查看中的所有字串。 ParseThe Parse and TryParse methods do not fully iterate all strings in patterns when parsing the string representation of a date and time. 如果您需要日期和時間字串在剖析作業中有特定格式,您應該將有效格式的陣列傳遞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)方法。If you require a date and time string to have particular formats in a parsing operation, you should pass the array of valid formats to the DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles), DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles), DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime), or DateTimeOffset.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) method.

您可以定義對應到 "d"、"D"、"t"、"T" 和 "y" 或 "Y" 標準日期和時間格式字串的自訂格式字串。You can define custom format strings that correspond to the "d", "D", "t", "T", and "y" or "Y" standard date and time format strings. 如果的值format是任何其他標準格式字串,則SetAllDateTimePatterns方法ArgumentException會擲回。If the value of format is any other standard format string, the SetAllDateTimePatterns method throws an ArgumentException.

如果您的自訂日期和時間格式字串包含日期分隔符號,您應該明確地指定日期分隔符號,而不是依賴以特定日期分隔符號取代 "/" 自訂格式規範的剖析或格式化方法。If your custom date and time format strings include date separators, you should explicitly specify a date separator instead of relying on the parsing or formatting method that replaces the "/" custom format specifier with a particular date separator. 例如,若要取得模式 MM DD-yyyy,請使用 "MM-DD-yyyy" 模式。For example, to obtain the pattern MM-DD-yyyy, use the pattern "MM-DD-yyyy".

適用於

另請參閱