DateTimeFormatInfo.SetAllDateTimePatterns(String[], Char) Метод

Определение

Задает строки настраиваемого формата даты и времени, соответствующие заданной строке стандартного формата.

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 массив нулевой длины.

–или–

format не является допустимой строкой стандартного формата или является стандартной строкой формата, шаблоны которой нельзя задать.

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-гггг, используйте шаблон MM-DD-гггг.

Применяется к

См. также раздел