Поделиться через


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". Если значением является любая другая строка стандартного formatSetAllDateTimePatterns формата, метод вызывает исключение ArgumentException.

Если строки настраиваемого формата даты и времени содержат разделители даты, следует явно указать разделитель даты вместо использования метода анализа или форматирования, который заменяет настраиваемый описатель формата "/" определенным разделителем даты. Например, чтобы получить шаблон ММ-ДД-гггг, используйте шаблон "ММ-ДД-гггг".

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

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