DateTimeFormatInfo.SetAllDateTimePatterns(String[], Char) Metod

Definition

Anger de anpassade datum- och tidsformatsträngarna som motsvarar en angiven standardformatsträng.

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

Parametrar

patterns
String[]

En matris med anpassade formatsträngar.

format
Char

Standardformatsträngen som är associerad med de anpassade formatsträngar som anges i parametern patterns .

Attribut

Undantag

patterns är null eller en matris med noll längd.

-eller-

format är inte en giltig standardformatsträng eller är en standardformatsträng vars mönster inte kan anges.

patterns har ett matriselement vars värde är null.

Det här DateTimeFormatInfo objektet är skrivskyddat.

Exempel

I följande exempel instansieras ett CultureInfo-objekt som representerar kulturen "en-US" (engelska – United States) och använder det för att parsa en matris med datum- och tidssträngar med standardformatsträngen "Y". Den använder SetAllDateTimePatterns sedan metoden för att associera en ny anpassad formatsträng med standardformatsträngen "Y" och försöker sedan parsa matrisen med datum- och tidssträngar. Utdata från exemplet visar att den nya anpassade formatsträngen används i både parsnings- och formateringsåtgärderna.

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

Kommentarer

Metoden SetAllDateTimePatterns definierar de anpassade formatsträngar som motsvarar en viss standardsträng för datum- och tidsformat. Om ett anrop till en datum- och tidsformateringsmetod innehåller standardformatsträngen för datum och tid som anges av formatanvänder metoden det första elementet i matrisen patterns för att definiera formatet för den resulterande strängen.

Varning

Metoderna Parse och TryParse itererar inte helt alla strängar i patterns när strängrepresentationen av ett datum och en tid parsas. Om du behöver en datum- och tidssträng för att ha specifika format i en parsningsåtgärd bör du skicka matrisen med giltiga format till DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)metoden , DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles), DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)eller DateTimeOffset.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) .

Du kan definiera anpassade formatsträngar som motsvarar standardformatsträngarna "d", "D", "t", "T" och "y" eller "Y". Om värdet format för är någon annan standardformatsträng SetAllDateTimePatterns genererar metoden en ArgumentException.

Om dina anpassade datum- och tidsformatsträngar innehåller datumavgränsare bör du uttryckligen ange en datumavgränsare i stället för att förlita dig på metoden parsning eller formatering som ersätter den anpassade formatspecificeraren "/" med en viss datumavgränsare. Om du till exempel vill hämta mönstret MM-DD-åå använder du mönstret "MM-DD-åååå".

Gäller för

Se även