DateTimeFormatInfo.SetAllDateTimePatterns(String[], Char) Metoda

Definice

Nastaví vlastní řetězce formátu data a času, které odpovídají zadanému řetězci standardního formátu.

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[]

Pole řetězců vlastního formátu.

format
Char

Řetězec standardního formátu přidružený k řetězcům vlastního formátu zadaným v parametru patterns .

Atributy

Výjimky

patterns je null nebo pole nulové délky.

-nebo-

format není platný řetězec standardního formátu nebo je standardní formátovací řetězec, jehož vzory nelze nastavit.

patterns má prvek pole, jehož hodnota je null.

Tento DateTimeFormatInfo objekt je jen pro čtení.

Příklady

Následující příklad vytvoří instanci objektuCultureInfo, který představuje jazykovou verzi en-US (angličtina – USA) a používá ji k analýze pole řetězců data a času pomocí řetězce standardního formátu "Y". Pak použije metodu SetAllDateTimePatterns k přidružení nového řetězce vlastního formátu k řetězci standardního formátu "Y" a pak se pokusí parsovat pole řetězců data a času. Výstup z příkladu ukazuje, že nový řetězec vlastního formátu se používá v operacích analýzy i formátování.

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

Poznámky

Metoda SetAllDateTimePatterns definuje vlastní řetězce formátu, které odpovídají určitému standardnímu řetězci formátu data a času. Pokud volání metody formátování data a času zahrnuje standardní formátovací řetězec data a času určený parametrem format, metoda použije první prvek v patterns poli k definování formátu výsledného řetězce.

Upozornění

Metody Parse a TryParse při analýze řetězcové reprezentace data a času plně iterují všechny řetězce v patterns . Pokud vyžadujete, aby řetězec data a času měl v operaci analýzy konkrétní formáty, měli byste předat pole platných formátů metodě DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles), DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles), DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)nebo DateTimeOffset.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) .

Můžete definovat vlastní formátovací řetězce, které odpovídají řetězcům standardního formátu data a času "d", "D", "t", "T" a "y" nebo "Y". Pokud je hodnota format jakýkoli jiný standardní formátovací řetězec, SetAllDateTimePatterns metoda vyvolá ArgumentException.

Pokud vlastní řetězce formátu data a času obsahují oddělovače kalendářních dat, měli byste oddělovač data explicitně zadat místo toho, abyste se spoléhali na metodu analýzy nebo formátování, která nahradí specifikátor vlastního formátu "/" konkrétním oddělovačem data. Pokud například chcete získat vzor MM-DD-yyyy, použijte vzor "MM-DD-yyyy".

Platí pro

Viz také