DateTimeFormatInfo.SetAllDateTimePatterns(String[], Char) Metodo

Definizione

Imposta le stringhe di formato di data e ora che corrispondono a una stringa di formato standard specificata.

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)

Parametri

patterns
String[]

Matrice di stringhe di formato personalizzate.

format
Char

La stringa di formato standard associata alle stringhe di formato personalizzato specificate nel parametro patterns.

Attributi

Eccezioni

patterns è null oppure è una matrice di lunghezza zero.

-oppure-

format non è una stringa di formato standard valida o non è una stringa di formato standard i cui modelli non possono essere impostati.

patterns ha un elemento di matrice il cui valore è null.

Questo oggetto DateTimeFormatInfo è di sola lettura.

Esempio

Nell'esempio seguente viene creata un'istanza di un CultureInfo oggetto che rappresenta le impostazioni cultura "en-US" (inglese - Stati Uniti) e la usa per analizzare una matrice di stringhe di data e ora usando la stringa di formato standard "Y". Usa quindi il SetAllDateTimePatterns metodo per associare una nuova stringa di formato personalizzata alla stringa di formato standard "Y" e quindi tenta di analizzare la matrice di stringhe di data e ora. L'output dell'esempio dimostra che la nuova stringa di formato personalizzata viene usata sia nelle operazioni di analisi che di formattazione.

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

Commenti

Il SetAllDateTimePatterns metodo definisce le stringhe di formato personalizzate che corrispondono a una determinata stringa di formato data e ora standard. Se una chiamata a un metodo di formattazione data e ora include la stringa di formato data e ora standard specificata da format, il metodo usa il primo elemento della patterns matrice per definire il formato della stringa risultante.

Avviso

I Parse metodi e TryParse non eseguono completamente l'iterazione di tutte le stringhe in patterns durante l'analisi della rappresentazione stringa di una data e dell'ora. Se è necessaria una stringa di data e ora per avere formati specifici in un'operazione di analisi, è necessario passare la matrice di formati validi al DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)metodo , DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles), DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)o DateTimeOffset.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) .

È possibile definire stringhe di formato personalizzate che corrispondono alle stringhe di formato "d", "D", "t", "T" e "y" o "Y" di formato data e ora standard. Se il valore di format è qualsiasi altra stringa di formato standard, il SetAllDateTimePatterns metodo genera un ArgumentExceptionoggetto .

Se le stringhe di formato data e ora personalizzate includono separatori di data, è consigliabile specificare in modo esplicito un separatore di date anziché basarsi sul metodo di analisi o formattazione che sostituisce l'identificatore di formato personalizzato "/" con un separatore di data specifico. Ad esempio, per ottenere il modello MM-DD-y, usare il modello "MM-DD-y".

Si applica a

Vedi anche