DateTimeFormatInfo.SetAllDateTimePatterns(String[], Char) Método

Definición

Establece las cadenas del formato de fecha y hora personalizadas que corresponden a una cadena de formato estándar especificada.

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)

Parámetros

patterns
String[]

Una matriz de cadenas con formato personalizado.

format
Char

La cadena de formato estándar asociada a las cadenas con formato personalizado especificadas en el parámetro patterns.

Atributos

Excepciones

patterns es null o una cadena de longitud cero.

o bien

format no es una cadena de formato estándar válida o es una cadena de formato estándar cuyos modelos no se pueden establecer.

patterns tiene un elemento de matriz cuyo valor es null.

Este objeto DateTimeFormatInfo es de solo lectura.

Ejemplos

En el ejemplo siguiente se crea una instancia de un CultureInfo objeto que representa la referencia cultural "en-US" (inglés - Estados Unidos) y se usa para analizar una matriz de cadenas de fecha y hora mediante la cadena de formato estándar "Y". A continuación, usa el SetAllDateTimePatterns método para asociar una nueva cadena de formato personalizado con la cadena de formato estándar "Y" e intenta analizar la matriz de cadenas de fecha y hora. La salida del ejemplo muestra que la nueva cadena de formato personalizado se usa en las operaciones de análisis y formato.

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

Comentarios

El SetAllDateTimePatterns método define las cadenas de formato personalizado que corresponden a una cadena de formato de fecha y hora estándar determinada. Si una llamada a un método de formato de fecha y hora incluye la cadena de formato de fecha y hora estándar especificada por format, el método usa el primer elemento de la patterns matriz para definir el formato de la cadena resultante.

Advertencia

Los Parse métodos y TryParse no iteran completamente todas las cadenas de patterns al analizar la representación de cadena de una fecha y hora. Si necesita una cadena de fecha y hora para tener formatos concretos en una operación de análisis, debe pasar la matriz de formatos válidos al DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)método , DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles), DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)o DateTimeOffset.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset) .

Puede definir cadenas de formato personalizado que corresponden a las cadenas de formato estándar de fecha y hora "d", "D", "t", "T" e "y" o "Y". Si el valor de format es cualquier otra cadena de formato estándar, el SetAllDateTimePatterns método produce una ArgumentExceptionexcepción .

Si las cadenas de formato de fecha y hora personalizadas incluyen separadores de fecha, debe especificar explícitamente un separador de fecha en lugar de basarse en el método de análisis o formato que reemplaza el especificador de formato personalizado "/" por un separador de fecha determinado. Por ejemplo, para obtener el patrón MM-DD-aaaa, use el patrón "MM-DD-aaaa".

Se aplica a

Consulte también