DateTimeFormatInfo.SetAllDateTimePatterns(String[], Char) Metoda

Definicja

Ustawia niestandardowe ciągi formatu daty i godziny, które odpowiadają określonemu standardowemu ciągowi formatu.

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)

Parametry

patterns
String[]

Tablica ciągów formatu niestandardowego.

format
Char

Ciąg formatu standardowego skojarzony z niestandardowymi ciągami formatu określonymi w parametrze patterns .

Atrybuty

Wyjątki

patterns jest null lub tablicą o zerowej długości.

-lub-

format nie jest prawidłowym ciągiem formatu standardowego lub jest standardowym ciągiem formatu, którego nie można ustawić wzorców.

patterns ma element tablicy, którego wartość to null.

Ten DateTimeFormatInfo obiekt jest tylko do odczytu.

Przykłady

Poniższy przykład tworzy wystąpienie obiektu reprezentującego kulturę CultureInfo "en-US" (angielski — Stany Zjednoczone) i używa jej do analizowania tablicy ciągów daty i godziny przy użyciu standardowego ciągu formatu "Y". Następnie używa SetAllDateTimePatterns metody do skojarzenia nowego niestandardowego ciągu formatu z ciągiem formatu standardowego "Y", a następnie próbuje przeanalizować tablicę ciągów daty i godziny. Dane wyjściowe z przykładu pokazują, że nowy ciąg formatu niestandardowego jest używany zarówno w operacjach analizowania, jak i formatowania.

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

Uwagi

Metoda SetAllDateTimePatterns definiuje niestandardowe ciągi formatu, które odpowiadają określonemu standardowemu ciągowi formatu daty i godziny. Jeśli wywołanie metody formatowania daty i godziny zawiera standardowy ciąg formatu daty i godziny określony przez formatmetodę , metoda używa pierwszego elementu w patterns tablicy do zdefiniowania formatu wynikowego ciągu.

Ostrzeżenie

Metody Parse i TryParse nie w pełni iterują wszystkich ciągów w patterns pliku podczas analizowania reprezentacji ciągu daty i godziny. Jeśli chcesz, aby ciąg daty i godziny miał określone formaty w operacji analizowania, należy przekazać tablicę prawidłowych formatów do DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)metody , DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles), DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)lub DateTimeOffset.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) .

Możesz zdefiniować niestandardowe ciągi formatu, które odpowiadają standardowym ciągom formatu daty i godziny "d", "t", "T" i "y" lub "Y". Jeśli wartość format jest dowolnym innym standardowym ciągiem formatu, SetAllDateTimePatterns metoda zgłasza wartość ArgumentException.

Jeśli niestandardowe ciągi formatu daty i godziny zawierają separatory dat, należy jawnie określić separator daty zamiast polegać na metodzie analizowania lub formatowania, która zastępuje specyfikator formatu niestandardowego "/" określonym separatorem dat. Aby na przykład uzyskać wzorzec MM-DD-yy, użyj wzorca "MM-DD-yyyy".

Dotyczy

Zobacz też