Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Personas que lo han encontrado útil: 1 de 1 - Valorar este tema

DateTimeFormatInfo (Clase)

Proporciona información específica de la referencia cultural acerca del formato de los valores de fecha y hora.

System.Object
  System.Globalization.DateTimeFormatInfo

Espacio de nombres:  System.Globalization
Ensamblado:  mscorlib (en mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class DateTimeFormatInfo : ICloneable, 
	IFormatProvider

El tipo DateTimeFormatInfo expone los siguientes miembros.

  NombreDescripción
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsDateTimeFormatInfoInicializa una nueva instancia de la clase DateTimeFormatInfo en la que se puede escribir y que es independiente de la referencia cultural (invariable).
Arriba
  NombreDescripción
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsAbbreviatedDayNamesObtiene o establece una matriz de una dimensión de tipo String que contiene las abreviaturas de nombres específicas de la referencia cultural de los días de la semana.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsAbbreviatedMonthGenitiveNamesObtiene o establece una matriz de cadenas de nombres abreviados de los meses asociada al objeto DateTimeFormatInfo actual.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsAbbreviatedMonthNamesObtiene o establece una matriz de cadenas de una dimensión que contiene abreviaturas específicas de la referencia cultural de los meses.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsAMDesignatorObtiene o establece el designador de cadena para las horas que son "ante meridiem" (antes de mediodía).
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCalendarObtiene o establece el calendario que se utilizará para la referencia cultural actual.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCalendarWeekRuleObtiene o establece el valor que especifica la regla que se utiliza para determinar la primera semana del calendario del año.
Propiedad públicaMiembro estáticoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCurrentInfoObtiene un objeto DateTimeFormatInfo de sólo lectura que aplica formato a los valores basándose en la referencia cultural actual.
Propiedad públicaCompatible con XNA FrameworkDateSeparatorObtiene o establece la cadena que separa los componentes de una fecha; es decir, el año, el mes y el día.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsDayNamesObtiene o establece una matriz de cadena de una dimensión que contiene los nombres completos específicos de la referencia cultural de los días de la semana.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsFirstDayOfWeekObtiene o establece el primer día de la semana.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsFullDateTimePatternObtiene o establece la cadena de formato personalizado para un valor de fecha larga y de hora larga.
Propiedad públicaMiembro estáticoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsInvariantInfoObtiene el objeto DateTimeFormatInfo predeterminado de solo lectura que es independiente de la referencia cultural (de todos los idiomas).
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsIsReadOnlyObtiene un valor que indica si el objeto DateTimeFormatInfo es de solo lectura.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsLongDatePatternObtiene o establece la cadena de formato personalizado para un valor de fecha larga.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsLongTimePatternObtiene o establece la cadena de formato personalizado para un valor de hora larga.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsMonthDayPatternObtiene o establece la cadena de formato personalizado para un valor de mes y día.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsMonthGenitiveNamesObtiene o establece una matriz de cadenas de nombres de los meses asociada al objeto DateTimeFormatInfo actual.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsMonthNamesObtiene o establece una matriz de una dimensión de tipo String que contiene los nombres completos específicos de la referencia cultural de los meses.
Propiedad públicaNativeCalendarNameObtiene el nombre nativo del calendario asociado al objeto DateTimeFormatInfo actual.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsPMDesignatorObtiene o establece el designador de cadena para las horas que son "post meridiem" (después de mediodía).
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsRFC1123PatternObtiene la cadena de formato personalizada para un valor de hora basado en la especificación 1123 de Solicitudes de comentarios (RFC) del Grupo de trabajo de ingeniería de Internet (IETF).
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsShortDatePatternObtiene o establece la cadena de formato personalizado para un valor de fecha corta.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsShortestDayNamesObtiene o establece una matriz de cadenas con los nombres abreviados más cortos y únicos para los días asociada al objeto DateTimeFormatInfo actual.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsShortTimePatternObtiene o establece la cadena de formato personalizado para un valor de hora corta.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsSortableDateTimePatternObtiene la cadena de formato personalizada para un valor de fecha y hora que se puede ordenar.
Propiedad públicaCompatible con XNA FrameworkTimeSeparatorObtiene o establece la cadena que separa los componentes de una hora; es decir, la hora, los minutos y los segundos.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsUniversalSortableDateTimePatternObtiene la cadena de formato personalizada para una cadena de fecha y hora universal que se puede ordenar.
Propiedad públicaCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsYearMonthPatternObtiene o establece la cadena de formato personalizado para un valor de año y mes.
Arriba
  NombreDescripción
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsCloneCrea una copia superficial de la colección DateTimeFormatInfo.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetAbbreviatedDayNamePara el día de la semana especificado, devuelve su abreviatura según la referencia cultural asociada al objeto DateTimeFormatInfo actual.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetAbbreviatedEraNameDevuelve la cadena que contiene la abreviatura de la era especificada, si existe.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetAbbreviatedMonthNamePara el mes especificado, devuelve su abreviatura según la referencia cultural asociada al objeto DateTimeFormatInfo actual.
Método públicoCompatible con XNA FrameworkGetAllDateTimePatterns()Devuelve todos los modelos estándar en los que se puede aplicar formato a los valores de fecha y hora.
Método públicoCompatible con XNA FrameworkGetAllDateTimePatterns(Char)Devuelve todos los modelos en los que se puede aplicar formato a valores de fecha y hora mediante la cadena de formato estándar especificado.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetDayNamePara el día de la semana especificado, devuelve su nombre completo según la referencia cultural asociada al objeto DateTimeFormatInfo actual.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetEraDevuelve el valor entero que representa la era especificada.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetEraNameDevuelve la cadena que contiene el nombre de la era especificada.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetFormatDevuelve un objeto del tipo especificado que proporciona un servicio de formato de fecha y hora.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método públicoMiembro estáticoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetInstanceDevuelve el objeto DateTimeFormatInfo asociado al objeto IFormatProvider especificado.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetMonthNamePara el mes especificado, devuelve su nombre completo según la referencia cultural asociada al objeto DateTimeFormatInfo actual.
Método públicoGetShortestDayNameObtiene la abreviatura más corta para un día de la semana especificado asociado al objeto DateTimeFormatInfo actual.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsGetType Obtiene el Typede la instancia actual. (Se hereda de Object).
Método públicoMiembro estáticoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsReadOnlyDevuelve un contenedor de DateTimeFormatInfo de solo lectura.
Método públicoSetAllDateTimePatternsEstablece las cadenas del formato de fecha y hora personalizadas que corresponden a una cadena de formato estándar especificada.
Método públicoCompatible con XNA FrameworkCompatible con Biblioteca de clases portableCompatible con .NET para aplicaciones de la Tienda WindowsToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Arriba

Las propiedades de la clase DateTimeFormatInfo contienen información específica de la referencia cultural para dar formato o analizar valores de fecha y hora como el siguiente:

  • Los modelos utilizados para dar formato a valores de fecha.

  • Los modelos utilizados para dar formato a valores de tiempo.

  • Los nombres de los días de la semana.

  • Los nombres de los meses del año.

  • Valores utilizados designadores a.m. y p.m. puntual.

  • El calendario en el que se expresan fechas.

En esta sección:

Crear instancias de un objeto de DateTimeFormatInfo

Un objeto DateTimeFormatInfo puede representar las convenciones de formato de la referencia cultural, de una referencia cultural concreta, una referencia cultural neutra, o referencia cultural actual. En esta sección se explica cómo crear instancias de cada tipo de objeto DateTimeFormatInfo .

c6dw49cz.collapse_all(es-es,VS.110).gifCrear instancias un DateTimeFormatInfo objeto para la referencia cultural invariable

La referencia cultural neutra representa una referencia cultural sin tener en cuenta la referencia cultural. Se basa en el idioma inglés, pero no en cualquier país o región angloparlante concretos. Aunque los datos de referencias culturales concretas pueden ser dinámicos y pueden cambiar para reflejar nuevas convenciones culturales o preferencias de usuario, los datos de la referencia cultural invariable no cambia. Puede crear instancias de un objeto DateTimeFormatInfo que representa las convenciones de formato de la referencia cultural invariable de las siguientes maneras:

El ejemplo siguiente utiliza cada uno de estos métodos para crear instancias de un objeto DateTimeFormatInfo que representa la referencia cultural invariable. A continuación indica si el objeto es de solo lectura.


System.Globalization.DateTimeFormatInfo dtfi; 

dtfi = System.Globalization.DateTimeFormatInfo.InvariantInfo;
Console.WriteLine(dtfi.IsReadOnly);               

dtfi = new System.Globalization.DateTimeFormatInfo();
Console.WriteLine(dtfi.IsReadOnly);               

dtfi = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat;
Console.WriteLine(dtfi.IsReadOnly);                
// The example displays the following output:
//       True
//       False
//       True      


c6dw49cz.collapse_all(es-es,VS.110).gifCrear instancias de un objeto de DateTimeFormatInfo para una referencia cultural concreta

Una referencia cultural concreta representa un lenguaje que se hable en un país o región determinados. Por ejemplo, es-es es una referencia cultural que representa el idioma inglés habla en Estados Unidos, etc. CA es una referencia cultural que representa el idioma inglés habla en Canadá. Puede crear instancias de un objeto DateTimeFormatInfo que representa las convenciones de formato de una referencia cultural concreta de las siguientes maneras:

El ejemplo siguiente muestra cada una de estas maneras de crear instancias de un objeto DateTimeFormatInfo e indica si el objeto resultante es de sólo lectura.


System.Globalization.CultureInfo ci = null;
System.Globalization.DateTimeFormatInfo dtfi = null;

// Instantiate a culture using CreateSpecificCulture.
ci = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");
dtfi = ci.DateTimeFormat;
Console.WriteLine("{0} from CreateSpecificCulture: {1}", ci.Name, dtfi.IsReadOnly);

// Instantiate a culture using the CultureInfo constructor.
ci = new System.Globalization.CultureInfo("en-CA"); 
dtfi = ci.DateTimeFormat;
Console.WriteLine("{0} from CultureInfo constructor: {1}", ci.Name, dtfi.IsReadOnly);

// Retrieve a culture by calling the GetCultureInfo method.
ci = System.Globalization.CultureInfo.GetCultureInfo("en-AU");
dtfi = ci.DateTimeFormat;
Console.WriteLine("{0} from GetCultureInfo: {1}", ci.Name, dtfi.IsReadOnly);

// Instantiate a DateTimeFormatInfo object by calling DateTimeFormatInfo.GetInstance.  
ci = System.Globalization.CultureInfo.CreateSpecificCulture("en-GB");
dtfi = System.Globalization.DateTimeFormatInfo.GetInstance(ci);
Console.WriteLine("{0} from GetInstance: {1}", ci.Name, dtfi.IsReadOnly);

// The example displays the following output:
//      en-US from CreateSpecificCulture: False
//      en-CA from CultureInfo constructor: False
//      en-AU from GetCultureInfo: True
//      en-GB from GetInstance: False


c6dw49cz.collapse_all(es-es,VS.110).gifCrear instancias de un objeto de DateTimeFormatInfo para una referencia cultural neutra

Una referencia cultural neutra representa una referencia cultural o lenguaje que son independientes de un país de una región; normalmente es el elemento primario de una o varias referencias culturales. Por ejemplo, el fr es una referencia cultural neutra para el idioma francés y el elemento primario de la referencia cultural fr-FR. Puede crear instancias de un objeto DateTimeFormatInfo que representa las convenciones de formato de una referencia cultural neutra del mismo modo que crea un objeto DateTimeFormatInfo que representa las convenciones de formato de una referencia cultural concreta. Además, puede recuperar el objeto DateTimeFormatInfo de una referencia cultural neutra recuperando una referencia cultural neutra de la propiedad CultureInfo.Parent de una referencia cultural concreta y recuperar el objeto DateTimeFormatInfo devuelto por la propiedad CultureInfo.DateTimeFormat . A menos que la referencia cultural primaria representa la referencia cultural invariable, el objeto devuelto DateTimeFormatInfo es de lectura. El ejemplo siguiente muestra estas maneras de crear instancias de un objeto DateTimeFormatInfo que representa una referencia cultural neutra.


System.Globalization.CultureInfo specific, neutral;
System.Globalization.DateTimeFormatInfo dtfi;

// Instantiate a culture by creating a specific culture and using its Parent property.
specific = System.Globalization.CultureInfo.GetCultureInfo("fr-FR");
neutral = specific.Parent;
dtfi = neutral.DateTimeFormat;
Console.WriteLine("{0} from Parent property: {1}", neutral.Name, dtfi.IsReadOnly);

dtfi = System.Globalization.CultureInfo.GetCultureInfo("fr-FR").Parent.DateTimeFormat;
Console.WriteLine("{0} from Parent property: {1}", neutral.Name, dtfi.IsReadOnly);

// Instantiate a neutral culture using the CultureInfo constructor.
neutral = new System.Globalization.CultureInfo("fr");
dtfi = neutral.DateTimeFormat;
Console.WriteLine("{0} from CultureInfo constructor: {1}", neutral.Name, dtfi.IsReadOnly);

// Instantiate a culture using CreateSpecificCulture. 
neutral = System.Globalization.CultureInfo.CreateSpecificCulture("fr");
dtfi = neutral.DateTimeFormat;
Console.WriteLine("{0} from CreateSpecificCulture: {1}", neutral.Name, dtfi.IsReadOnly);

// Retrieve a culture by calling the GetCultureInfo method.
neutral = System.Globalization.CultureInfo.GetCultureInfo("fr");
dtfi = neutral.DateTimeFormat;
Console.WriteLine("{0} from GetCultureInfo: {1}", neutral.Name, dtfi.IsReadOnly);

// Instantiate a DateTimeFormatInfo object by calling GetInstance.  
neutral = System.Globalization.CultureInfo.CreateSpecificCulture("fr");
dtfi = System.Globalization.DateTimeFormatInfo.GetInstance(neutral);
Console.WriteLine("{0} from GetInstance: {1}", neutral.Name, dtfi.IsReadOnly);

// The example displays the following output:
//       fr from Parent property: False
//       fr from Parent property: False
//       fr from CultureInfo constructor: False
//       fr-FR from CreateSpecificCulture: False
//       fr from GetCultureInfo: True
//       fr-FR from GetInstance: False      


NotaNota

En las versiones 1.0 de .NET Framework con .NET Framework 3.5, intenta recuperar un objeto DateTimeFormatInfo que refleja las convenciones de formato de la creación de una referencia cultural neutra una excepción NotSupportedException .

Sin embargo, una referencia cultural neutra falta información de formato específica de la referencia cultural, porque es independiente de un país o de una región concretos. En lugar de rellenar el objeto DateTimeFormatInfo con valores genéricos, .NET Framework devuelve un objeto DateTimeFormatInfo que refleje las convenciones de formato de una referencia cultural concreta que es un elemento secundario de la referencia cultural neutra. Por ejemplo, el objeto DateTimeFormatInfo de la referencia cultural neutro de en refleje las convenciones de formato de la referencia cultural en-US, y el objeto DateTimeFormatInfo para la referencia cultural fr refleje las convenciones de formato de la referencia cultural fr-FR.

Puede utilizar código como el siguiente para determinar las convenciones de formato de la referencia cultural específica una referencia cultural neutra representan. El ejemplo utiliza la reflexión para comparar las propiedades DateTimeFormatInfo de una referencia cultural neutra con las propiedades de una referencia cultural secundaria concreta. Considera dos calendarios ser equivalentes si son el mismo tipo de calendario y, para los calendarios gregorianos, si sus propiedades GregorianCalendar.CalendarType tienen valores idénticos.


using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Reflection;

public class Example
{
   public static void Main()
   {
      // Get all the neutral cultures
      List<String> names = new List<String>();
      Array.ForEach(CultureInfo.GetCultures(CultureTypes.NeutralCultures),
                    culture => names.Add(culture.Name));
      names.Sort();
      foreach (var name in names) {
         // Ignore the invariant culture.
         if (name == "") continue;

         ListSimilarChildCultures(name);        
      }
   }

   private static void ListSimilarChildCultures(String name)
   {
      // Create the neutral DateTimeFormatInfo object.
      DateTimeFormatInfo dtfi = CultureInfo.GetCultureInfo(name).DateTimeFormat;
      // Retrieve all specific cultures of the neutral culture.
      CultureInfo[] cultures = Array.FindAll(CultureInfo.GetCultures(CultureTypes.SpecificCultures), 
                               culture => culture.Name.StartsWith(name + "-", StringComparison.OrdinalIgnoreCase));
      // Create an array of DateTimeFormatInfo properties
      PropertyInfo[] properties = typeof(DateTimeFormatInfo).GetProperties(BindingFlags.Instance | BindingFlags.Public);
      bool hasOneMatch = false;

      foreach (var ci in cultures) {
         bool match = true;     
         // Get the DateTimeFormatInfo for a specific culture.
         DateTimeFormatInfo specificDtfi = ci.DateTimeFormat;
         // Compare the property values of the two.
         foreach (var prop in properties) {
            // We're not interested in the value of IsReadOnly.     
            if (prop.Name == "IsReadOnly") continue;

            // For arrays, iterate the individual elements to see if they are the same.
            if (prop.PropertyType.IsArray) { 
               IList nList = (IList) prop.GetValue(dtfi, null);
               IList sList = (IList) prop.GetValue(specificDtfi, null);
               if (nList.Count != sList.Count) {
                  match = false;
Console.WriteLine("   Different n in {2} array for {0} and {1}", name, ci.Name, prop.Name);
                  break;
               } 

               for (int ctr = 0; ctr < nList.Count; ctr++) {
                  if (! nList[ctr].Equals(sList[ctr])) { 
                     match = false;
Console.WriteLine("   {0} value different for {1} and {2}", prop.Name, name, ci.Name);                     
                     break;
                  }     
               }

               if (! match) break;
            }
            // Get non-array values.
            else {
               Object specificValue = prop.GetValue(specificDtfi);
               Object neutralValue = prop.GetValue(dtfi);

               // Handle comparison of Calendar objects.
               if (prop.Name == "Calendar") { 
                  // The cultures have a different calendar type.
                  if (specificValue.ToString() != neutralValue.ToString()) {
Console.WriteLine("   Different calendar types for {0} and {1}", name, ci.Name);
                     match = false;
                     break;
                  }

                  if (specificValue is GregorianCalendar) {
                     if (((GregorianCalendar) specificValue).CalendarType != ((GregorianCalendar) neutralValue).CalendarType) {
Console.WriteLine("   Different Gregorian calendar types for {0} and {1}", name, ci.Name);
                        match = false;
                        break;
                     }
                  }
               }
               else if (! specificValue.Equals(neutralValue)) {
                  match = false;
Console.WriteLine("   Different {0} values for {1} and {2}", prop.Name, name, ci.Name);                  
                  break;   
               }
            }        
         }
         if (match) {
            Console.WriteLine("DateTimeFormatInfo object for '{0}' matches '{1}'", 
                              name, ci.Name);
            hasOneMatch = true;
         }                                       
      }
      if (! hasOneMatch)
         Console.WriteLine("DateTimeFormatInfo object for '{0}' --> No Match", name);            

      Console.WriteLine();
   }
}


c6dw49cz.collapse_all(es-es,VS.110).gifCrear instancias de un objeto de DateTimeFormatInfo para la referencia cultural actual

Puede crear instancias de un objeto DateTimeFormatInfo que representa las convenciones de formato de la referencia cultural actual de las siguientes maneras:

  • Recuperación del valor de la propiedad CurrentInfo. El objeto DateTimeFormatInfo devuelto es de sólo lectura.

  • Recuperar el valor de la propiedad DateTimeFormat del objeto CultureInfo devuelta por la propiedad CultureInfo.CurrentCulture . El objeto DateTimeFormatInfo devuelto es de sólo lectura.

  • Llamar al método GetInstance con un objeto CultureInfo que represente la referencia cultural actual. El objeto DateTimeFormatInfo devuelto es de sólo lectura.

El ejemplo siguiente utiliza cada uno de estos métodos para crear instancias de un objeto DateTimeFormatInfo que representa las convenciones de formato de la referencia cultural actual. A continuación indica si el objeto es de solo lectura.


DateTimeFormatInfo dtfi;

dtfi = DateTimeFormatInfo.CurrentInfo;
Console.WriteLine(dtfi.IsReadOnly);

dtfi = CultureInfo.CurrentCulture.DateTimeFormat;
Console.WriteLine(dtfi.IsReadOnly);

dtfi = DateTimeFormatInfo.GetInstance(CultureInfo.CurrentCulture);
Console.WriteLine(dtfi.IsReadOnly);
// The example displays the following output:
//     True
//     True
//     True


Puede crear un objeto programable DateTimeFormatInfo que representa las convenciones de la referencia cultural del subproceso actual en una de estas maneras:

  • Recuperar un objeto DateTimeFormatInfo de tres maneras anteriores gama de controles y llamando al método Clone en DateTimeFormatInfo devuelto objeto. Esto crea una copia del objeto DateTimeFormatInfo original, salvo que la propiedad IsReadOnly es false.

  • Llamar al método CultureInfo.CreateSpecificCulture para crear un objeto CultureInfo que represente la referencia cultural actual, y después utilizar la propiedad CultureInfo.DateTimeFormat para recuperar el objeto DateTimeFormatInfo .

El ejemplo siguiente muestra cada forma de crear instancias de un objeto DateTimeFormatInfo de solo lectura y muestra el valor de su propiedad IsReadOnly .


using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTimeFormatInfo current1 = DateTimeFormatInfo.CurrentInfo;
      current1 = (DateTimeFormatInfo) current1.Clone();
      Console.WriteLine(current1.IsReadOnly);

      CultureInfo culture2 = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentCulture.Name);
      DateTimeFormatInfo current2 = culture2.DateTimeFormat;
      Console.WriteLine(current2.IsReadOnly);
   }
}
// The example displays the following output:
//       False
//       False


En Windows, el usuario puede invalidar algunos valores de propiedad DateTimeFormatInfo utilizados en operaciones de formato y análisis con la aplicación Configuración regional y de idioma en el Panel de control. Por ejemplo, un usuario cuya referencia cultural es fuerza Inglés (Estados Unidos) posibilidad de mostrar valores de tiempo prolongados usando un reloj de 24 horas (en el formato HH:mm:ss) en lugar del valor predeterminado reloj de 12 horas (en formato hh:mm:ss tt). Los objetos DateTimeFormatInfo recuperados de las maneras discutieron todos reflejan previamente estos usuario reemplazan. Si es no deseado, puede crear un objeto NumberFormatInfo que no refleje el usuario reemplazar (y también es de lectura y escritura en lugar de sólo lectura) llamando al constructor CultureInfo.CultureInfo(String, Boolean) y proporcione un valor false para el argumento useUserOverride . El ejemplo siguiente muestra esto para un sistema cuya referencia cultural actual sea Inglés (Estados Unidos) y cuyo han cambiado a modelo de tiempo largo predeterminado de h:mm:ss tt a HH:mm:ss.


using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo culture;
      DateTimeFormatInfo dtfi;

      culture = CultureInfo.CurrentCulture;
      dtfi = culture.DateTimeFormat;
      Console.WriteLine("Culture Name:      {0}", culture.Name);
      Console.WriteLine("User Overrides:    {0}", culture.UseUserOverride);
      Console.WriteLine("Long Time Pattern: {0}\n", culture.DateTimeFormat.LongTimePattern);

      culture = new CultureInfo(CultureInfo.CurrentCulture.Name, false);
      Console.WriteLine("Culture Name:      {0}",   culture.Name);
      Console.WriteLine("User Overrides:    {0}",   culture.UseUserOverride);
      Console.WriteLine("Long Time Pattern: {0}\n", culture.DateTimeFormat.LongTimePattern);
   }
}
// The example displays the following output:
//       Culture Name:      en-US
//       User Overrides:    True
//       Long Time Pattern: HH:mm:ss
//       
//       Culture Name:      en-US
//       User Overrides:    False
//       Long Time Pattern: h:mm:ss tt


DateTimeFormatInfo y datos dinámicos

Los datos referencias culturales concretos para dar formato a los valores de fecha y hora proporcionados por la clase DateTimeFormatInfo es dinámico, como los datos culturales proporcionadas por la clase CultureInfo . No debe crear ninguna suposición sobre la estabilidad de valores de objetos DateTimeFormatInfo asociados a determinados objetos CultureInfo . Sólo los datos proporcionados por la referencia cultural invariable y su objeto DateTimeFormatInfo asociado es estable. Otros datos pueden cambiar entre las sesiones de la aplicación o incluso mientras la aplicación se está ejecutando. Hay cuatro orígenes importantes de cambio:

  • Actualizaciones del sistema. Preferencias culturales como el calendario preferido o el cambio habitual de los formatos de fecha y hora con el tiempo. Cuando esto sucede, Windows Update incluye cambios en el valor de propiedad DateTimeFormatInfo de una referencia cultural determinada.

  • Referencias culturales de reemplazo. La clase CultureAndRegionInfoBuilder se puede usar para reemplazar los datos de una referencia cultural existente.

  • Coloque en cascada cambios a los valores de propiedad. Varias propiedades referencia cultural relacionadas puede cambiar en tiempo de ejecución, que, a su vez, hace que los datos de DateTimeFormatInfo al cambio. Por ejemplo, la referencia cultural actual se puede cambiar mediante programación o utilizando la acción del usuario. Cuando esto sucede, el objeto DateTimeFormatInfo devuelto por la propiedad CurrentInfo cambia a un objeto asociado a la referencia cultural actual. Asimismo, el calendario de una referencia cultural puede cambiar, que puede provocar cambios a los valores de propiedad numerosos DateTimeFormatInfo .

  • Preferencias de usuario. Los usuarios de la aplicación pueden decidir invalidar algunos de los valores asociados a la referencia cultural del sistema actual mediante las opciones de configuración regional e idioma del Panel de control. Por ejemplo, los usuarios pueden elegir mostrar la fecha en un formato diferente. Si la propiedad CultureInfo.UseUserOverride se establece en true, las propiedades del objeto DateTimeFormatInfo también se recuperan de configuración de usuario. Si la configuración de usuario son incompatibles con la referencia cultural asociada al objeto CultureInfo (por ejemplo, si el calendario seleccionado no es uno de los calendarios especifican mediante la propiedad OptionalCalendars ), los resultados de los métodos y valores de las propiedades son indefinidos.

Para minimizar la posibilidad de datos incoherentes, todas las propiedades usuario reemplazable de un objeto DateTimeFormatInfo inicializan cuando se cree. Aún hay alguna posibilidad de la inconsistencia, porque ni la creación de objetos ni el proceso de reemplazo de usuario es atómico y valores pertinentes pueden cambiar durante la creación de objeto. Sin embargo, esta situación debe ser muy poco habitual.

Puede controlar si el usuario reemplaza se refleja en objetos DateTimeFormatInfo que representa la misma referencia cultural que la referencia cultural del sistema. La tabla siguiente muestra las formas en las que un objeto DateTimeFormatInfo puede recuperar e indica si el objeto resultante refleja el usuario reemplazos.

Origen de objeto CultureInfo y de DateTimeFormatInfo

Refleja el usuario reemplaza

Propiedad CultureInfo.CurrentCulture.DateTimeFormat

Si

Propiedad DateTimeFormatInfo.CurrentInfo

Si

Método CultureInfo.CreateSpecificCulture

Si

Método CultureInfo.GetCultureInfo

No

Constructor CultureInfo.CultureInfo(String)

Si

Constructor CultureInfo.CultureInfo(String, Boolean)

Depende de valor del parámetro useUserOverride

A menos que haya una razón de peso para hacer lo contrario, debe respetar el usuario reemplaza cuando se utiliza el objeto DateTimeFormatInfo en aplicaciones cliente para dar formato y analizar los datos proporcionados por el usuario o mostrar datos. Para aplicaciones servidor o aplicaciones desatendidas, no debería. Sin embargo, si utiliza el objeto DateTimeFormatInfo o explícita o implícitamente conservar los datos de fecha y hora en cadena formulario, debe utilizar un objeto DateTimeFormatInfo que refleje las convenciones de formato de la referencia cultural, o debe especificar una cadena de formato de fecha y hora personalizado que utilice independientemente cultural.

Fecha y hora de formato

Un objeto DateTimeFormatInfo se usa implícita o explícitamente en todas las operaciones de formato de fecha y hora. Estas llamadas de inclusión a los métodos siguientes:

Todas las operaciones de formato de fecha y hora utilizan una implementación de IFormatProvider . La interfaz IFormatProvider incluye un solo método: IFormatProvider.GetFormat(Type). Este método de devolución de llamada se pasa un objeto Type que representa el tipo necesario para proporcionar información de formato. El método devuelve una instancia de ese tipo o null si no puede proporcionar una instancia del tipo. .NET Framework. incluye dos implementaciones de IFormatProvider para dar formato a las fechas y horas:

  • La clase CultureInfo , que representa una referencia cultural concreta (o un lenguaje específico en un país o región específicos). En una operación de formato de fecha y hora, el método CultureInfo.GetFormat devuelve el objeto DateTimeFormatInfo asociado a su propiedad CultureInfo.DateTimeFormat .

  • La clase DateTimeFormatInfo , que proporciona información sobre las convenciones de formato de la referencia cultural asociada. El método DateTimeFormatInfo.GetFormat devuelve una instancia de sí mismo.

Si una implementación de IFormatProvider no se proporciona un método de formato explícitamente, el objeto CultureInfo devuelto por la propiedad CultureInfo.CurrentCulture se utiliza que representa la referencia cultural del subproceso actual.

El ejemplo siguiente muestra la relación entre la interfaz IFormatProvider y la clase DateTimeFormatInfo en operaciones de formato. Define una implementación personalizada IFormatProvider cuyo método GetFormat muestra el tipo de objeto solicitado por la operación de formato. Si se soliciten un objeto DateTimeFormatInfo , el método proporciona el objeto DateTimeFormatInfo para la referencia cultural del subproceso actual. Como muestra el resultado del ejemplo, el método Decimal.ToString(IFormatProvider) solicita un objeto DateTimeFormatInfo para proporcionar información de formato, mientras que el método String.Format(IFormatProvider, String, Object[]) solicita los objetos NumberFormatInfo y DateTimeFormatInfo junto con una implementación de ICustomFormatter .


using System;
using System.Globalization;

public class CurrentCultureFormatProvider : IFormatProvider
{
   public Object GetFormat(Type formatType) 
   {
      Console.WriteLine("Requesting an object of type {0}", 
                        formatType.Name);
      if (formatType == typeof(NumberFormatInfo))
         return NumberFormatInfo.CurrentInfo;
      else if (formatType == typeof(DateTimeFormatInfo))
         return DateTimeFormatInfo.CurrentInfo;
      else
         return null;
   }
}

public class Example
{
   public static void Main()
   {
      DateTime dateValue = new DateTime(2013, 5, 28, 12, 30, 0);
      string value = dateValue.ToString("F", new CurrentCultureFormatProvider());
      Console.WriteLine(value);
      Console.WriteLine();
      string composite = String.Format(new CurrentCultureFormatProvider(), 
                                       "Date: {0:d}   Amount: {1:C}   Description: {2}",
                                       dateValue, 1264.03m, "Service Charge");
      Console.WriteLine(composite);
      Console.WriteLine();
   }
}
// The example displays output like the following:
//       Requesting an object of type DateTimeFormatInfo
//       Tuesday, May 28, 2013 1:30:00 PM
//       
//       Requesting an object of type ICustomFormatter
//       Requesting an object of type DateTimeFormatInfo
//       Requesting an object of type NumberFormatInfo
//       Date: 5/28/2013   Amount: $1,264.03   Description: Service Charge


Propiedades de cadenas de formato y de DateTimeFormatInfo

El objeto DateTimeFormatInfo incluye tres tipos de propiedades que se utilizan en operaciones de formato con valores de fecha y hora:

cadenas de formato de fecha y hora estándar, como “d”, “d”, “f”, y “F”, es alias que corresponden a las propiedades del modelo de formato DateTimeFormatInfo . La mayoría de los especificadores de formato de fecha y hora se relaciona con cadenas o las subcadenas que inserciones en una operación de formato en la secuencia resultante. La tabla siguiente enumera los especificadores de compilación estándar y de formato de fecha y hora personalizado de y sus propiedades asociadas DateTimeFormatInfo . Para obtener más información sobre cómo utilizar estos especificadores de formato, vea Cadenas con formato de fecha y hora estándar y Cadenas de formato de fecha y hora personalizadas. Observe que cada cadena de formato estándar corresponde a DateTimeFormatInfo una propiedad cuyo valor es una cadena de formato de fecha y hora personalizado. Los especificadores individuales en esta cadena de formato personalizado a su vez corresponden a otro DateTimeFormatInfo propiedades. En la tabla solo las propiedades DateTimeFormatInfo en que las cadenas de formato estándar son alias, y no muestran las propiedades que se pueden lograr por cadenas de formato personalizadas asignadas a esas propiedades con alias. Además, la tabla enumera solo especificadores de formato personalizados que corresponden a DateTimeFormatInfo propiedades.

Especificador de formato

Propiedades asociadas

“d” (fecha corta; cadena de formato estándar)

ShortDatePattern , definir el formato global de la cadena de resultado.

“D” (fecha larga; cadena de formato estándar)

LongDatePattern , definir el formato global de la cadena de resultado.

“f” (fecha completa y hora corta; cadena de formato estándar)

LongDatePattern , definir el formato del componente de fecha de la cadena de resultado.

ShortTimePattern , definir el formato del componente de hora de la cadena de resultado.

“F” (fecha completa y hora larga; cadena de formato estándar)

LongDatePattern , definir el formato del componente de fecha de la cadena de resultado.

LongTimePattern , definir el formato del componente de hora de la cadena de resultado.

“g” (fecha u hora corta generales; cadena de formato estándar)

ShortDatePattern , definir el formato del componente de fecha de la cadena de resultado.

ShortTimePattern , definir el formato del componente de hora de la cadena de resultado.

“G” (fecha general y hora larga; cadena de formato estándar)

ShortDatePattern , definir el formato del componente de fecha de la cadena de resultado.

LongTimePattern , definir el formato del componente de hora de la cadena de resultado.

“M”, “m” (mes/día; cadena de formato estándar)

MonthDayPattern , definir el formato global de la cadena de resultado.

“O”, “o” (fecha y hora ida y vuelta; cadena de formato estándar)

Ninguno.

“R”, “r” (RFC1123; cadena de formato estándar)

RFC1123Pattern , defina una cadena de resultado que se ajusta a RFC estándar 1123. La propiedad es de sólo lectura

“s” (fecha y hora convenientes; cadena de formato estándar)

SortableDateTimePattern , defina una cadena de resultado que se ajusta a ISO 8601 Standard. La propiedad es de sólo lectura

“t” (hora corta; cadena de formato estándar)

ShortTimePattern , definir el formato global de la cadena de resultado.

“T” (hora larga; cadena de formato estándar)

LongTimePattern , definir el formato global de la cadena de resultado.

“u” (fecha y hora convenientes universales; cadena de formato estándar)

UniversalSortableDateTimePattern , defina una cadena de resultado que se ajusta a ISO 8601 Standard por hora universal coordinada. La propiedad es de sólo lectura

“U” (fecha y hora completas universales; cadena de formato estándar)

FullDateTimePattern , definir el formato global de la cadena de resultado.

“Y”, “y” (mes y año; cadena de formato estándar)

YearMonthPattern , definir el formato global de la cadena de resultado.

“ddd” (especificador de formato personalizado)

AbbreviatedDayNames , incluir el nombre abreviado del día de la semana en la cadena de resultado.

“g”, “gg” (especificador de formato personalizado)

Llama al método GetEraName para insertar el nombre de la era en la cadena de resultado.

“MMM” (especificador de formato personalizado)

AbbreviatedMonthNames , incluir el nombre abreviado de meses en la cadena de resultado.

“MMMM” (especificador de formato personalizado)

MonthNames o MonthGenitiveNames, incluir el nombre completo del mes en la cadena de resultado.

“t” (especificador de formato personalizado)

AMDesignator o PMDesignator, incluir el primer carácter del designador AM/PM en la cadena de resultado.

“tt” (especificador de formato personalizado)

AMDesignator o PMDesignator, incluir designador AM/PM completo en la cadena de resultado.

“: ” (especificador de formato personalizado)

TimeSeparator , incluir el separador de hora de la cadena de resultado.

“/” (especificador de formato personalizado)

DateSeparator , incluir el separador de fecha en la cadena de resultado.

Propiedades de DateTimeFormatInfo

Puede cambiar la cadena de resultado generada por cadenas de formato de fecha y hora modificando las propiedades asociadas de un objeto programable DateTimeFormatInfo . Para determinar si se puede escribir en un objeto DateTimeFormatInfo, utilice la propiedad IsReadOnly. Para personalizar un objeto DateTimeFormatInfo de esta manera:

  1. Cree una copia de lectura y escritura de un objeto DateTimeFormatInfo cuyas convenciones de formato desee modificar. (Vea la sección Crear instancias de un objeto de DateTimeFormatInfo .)

  2. Modifique la propiedad o propiedades que se utilizan para representar la cadena de resultado deseado. (Para obtener información sobre cómo da formato métodos use las propiedades DateTimeFormatInfo para definir cadenas de resultado, vea la sección anterior, Propiedades de cadenas de formato y de DateTimeFormatInfo.)

  3. Utilice el objeto DateTimeFormatInfo personalizado que creó como argumento IFormatProvider en llamadas a dar formato a métodos.

Hay otras dos maneras de cambiar el fomat de una cadena de resultado:

  • Puede utilizar la clase CultureAndRegionInfoBuilder para definir una referencia cultural personalizada (una referencia cultural que tenga un nombre único y que complemente referencias culturales existentes) o una referencia cultural de reemplazo (una que se usa en lugar de una referencia cultural concreta). Puede guardar y tener acceso a esta referencia cultural mediante programación como haría con cualquier objeto CultureInfo compatible con .NET Framework.

  • Si la cadena de resultado no tiene en cuenta la referencia cultural y sigue un formato predefinido, puede utilizar una cadena de formato de fecha y hora personalizado. Por ejemplo, si está serializando datos de fecha y hora en el formato YYYYMMDDHHmmss, puede generar la cadena de resultado pasando la cadena de formato personalizada al método DateTime.ToString(String) , y puede convertir la cadena de resultado a un valor DateTime llamando al método DateTime.ParseExact .

c6dw49cz.collapse_all(es-es,VS.110).gifCambiar el modelo de fecha corta

En el ejemplo siguiente se cambia el formato de una cadena de resultado generada por la cadena de formato estándar “d” (fecha corta). Cambia la propiedad asociada ShortDatePattern para en-US o la referencia cultural Inglés (Estados Unidos) de su valor predeterminado de “M/d/yyyy” a “yyyy'- “MM” - “dd” y aplicaciones “cadena de formato estándar d” para mostrar la fecha ambas antes y después de que se cambia la propiedad ShortDatePattern .


using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTime dateValue = new DateTime(2013, 8, 18); 
      CultureInfo enUS = CultureInfo.CreateSpecificCulture("en-US");
      DateTimeFormatInfo dtfi = enUS.DateTimeFormat;

      Console.WriteLine("Before modifying DateTimeFormatInfo object: ");
      Console.WriteLine("{0}: {1}\n", dtfi.ShortDatePattern, 
                                    dateValue.ToString("d", enUS));

      // Modify the short date pattern.
      dtfi.ShortDatePattern = "yyyy-MM-dd";
      Console.WriteLine("After modifying DateTimeFormatInfo object: ");
      Console.WriteLine("{0}: {1}", dtfi.ShortDatePattern, 
                                    dateValue.ToString("d", enUS));
   }
}
// The example displays the following output:
//       Before modifying DateTimeFormatInfo object:
//       M/d/yyyy: 8/18/2013
//       
//       After modifying DateTimeFormatInfo object:
//       yyyy-MM-dd: 2013-08-18


c6dw49cz.collapse_all(es-es,VS.110).gifCambiar el carácter de separador de fecha

En el ejemplo siguiente se cambia el carácter de separador de fecha en un objeto DateTimeFormatInfo que representa las convenciones de formato de la referencia cultural fr-FR. El ejemplo utiliza la cadena de formato estándar “G” para mostrar la fecha ambas antes y después de que se cambia la propiedad DateSeparator .


using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTime dateValue = new DateTime(2013, 08, 28); 
      CultureInfo frFR = CultureInfo.CreateSpecificCulture("fr-FR");
      DateTimeFormatInfo dtfi = frFR.DateTimeFormat;

      Console.WriteLine("Before modifying DateSeparator property: {0}",
                        dateValue.ToString("g", frFR));

      // Modify the date separator.
      dtfi.DateSeparator = "-";
      Console.WriteLine("After modifying the DateSeparator property: {0}",
                        dateValue.ToString("g", frFR));
   }
}
// The example displays the following output:
//       Before modifying DateSeparator property: 18/08/2013 00:00
//       After modifying the DateSeparator property: 18-08-2013 00:00


c6dw49cz.collapse_all(es-es,VS.110).gifCambiar las abreviaturas de nombre del día y el modelo de fecha larga

En algunos casos, el modelo de fecha larga, que muestra normalmente el día entero y el nombre de mes junto con el número del día del mes y el año, puede ser demasiado largo. El ejemplo siguiente acorta el modelo de fecha larga de la referencia cultural en-US devuelva una abreviatura del nombre del día de un carácter o de dos caracteres seguida por el número de días, la abreviatura de nombre de mes, y el año. Para ello asignando abreviaturas más cortas el nombre del día a la matriz AbbreviatedDayNames , y modificando la cadena de formato personalizada asignada a la propiedad LongDatePattern . Esto afecta a las cadenas de resultado devueltas por las cadenas de formato estándar “d” y “F”.


using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTime value = new DateTime(2013, 7, 9);
      CultureInfo enUS = CultureInfo.CreateSpecificCulture("en-US");
      DateTimeFormatInfo dtfi = enUS.DateTimeFormat;
      String[] formats = { "D", "F", "f" };

      // Display date before modifying properties.
      foreach (var fmt in formats)
         Console.WriteLine("{0}: {1}", fmt, value.ToString(fmt, dtfi));

      Console.WriteLine();

      // We don't want to change the FullDateTimePattern, so we need to save it.
      String originalFullDateTimePattern = dtfi.FullDateTimePattern;

      // Modify day name abbreviations and long date pattern.
      dtfi.AbbreviatedDayNames = new String[] { "Su", "M", "Tu", "W", "Th", "F", "Sa" };
      dtfi.LongDatePattern = "ddd dd-MMM-yyyy";
      dtfi.FullDateTimePattern = originalFullDateTimePattern;
      foreach (var fmt in formats)
         Console.WriteLine("{0}: {1}", fmt, value.ToString(fmt, dtfi));

   }
}
// The example displays the following output:
//       D: Tuesday, July 09, 2013
//       F: Tuesday, July 09, 2013 12:00:00 AM
//       f: Tuesday, July 09, 2013 12:00 AM
//       
//       D: Tu 09-Jul-2013
//       F: Tuesday, July 09, 2013 12:00:00 AM
//       f: Tu 09-Jul-2013 12:00 AM


Normalmente, el cambio en la propiedad LongDatePattern también afecta a la propiedad FullDateTimePattern , que a su vez define la cadena de resultado devuelta por la cadena de formato estándar “F”. Para conservar el modelo completo de fecha y hora original, el ejemplo reasigna la cadena de formato personalizada original asignada a la propiedad FullDateTimePattern después de que se modifique la propiedad LongDatePattern .

c6dw49cz.collapse_all(es-es,VS.110).gifImplementar de un reloj de 12 horas a un reloj de 24 horas

Para muchas referencias culturales en .NET Framework, el tiempo se expresa usando un reloj de 12 horas y un designador AM/PM. El ejemplo siguiente define un método ReplaceWith24HourClock que reemplaza en cualquier momento el formato que utiliza un reloj de 12 horas con un formato que utilice un reloj de 24 horas.


using System;
using System.Globalization;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      CultureInfo enUS = CultureInfo.CreateSpecificCulture("en-US");
      DateTimeFormatInfo dtfi = enUS.DateTimeFormat;

      Console.WriteLine("Original Property Values:");
      Console.WriteLine("ShortTimePattern: " + dtfi.ShortTimePattern);
      Console.WriteLine("LongTimePattern: " + dtfi.LongTimePattern);
      Console.WriteLine("FullDateTimePattern: " + dtfi.FullDateTimePattern);
      Console.WriteLine();

      dtfi.LongTimePattern = ReplaceWith24HourClock(dtfi.LongTimePattern);
      dtfi.ShortTimePattern = ReplaceWith24HourClock(dtfi.ShortTimePattern);

      Console.WriteLine("Modififed Property Values:");
      Console.WriteLine("ShortTimePattern: " + dtfi.ShortTimePattern);
      Console.WriteLine("LongTimePattern: " + dtfi.LongTimePattern);
      Console.WriteLine("FullDateTimePattern: " + dtfi.FullDateTimePattern);
   }     

   private static string ReplaceWith24HourClock(string fmt)
   {
      string pattern = @"^(?<openAMPM>\s*t+\s*)? " +
                       @"(?(openAMPM) h+(?<nonHours>[^ht]+)$ " +
                       @"| \s*h+(?<nonHours>[^ht]+)\s*t+)";
      return Regex.Replace(fmt, pattern, "HH${nonHours}", 
                           RegexOptions.IgnorePatternWhitespace);   
   }
}
// The example displays the following output:
//       Original Property Values:
//       ShortTimePattern: h:mm tt
//       LongTimePattern: h:mm:ss tt
//       FullDateTimePattern: dddd, MMMM dd, yyyy h:mm:ss tt
//       
//       Modififed Property Values:
//       ShortTimePattern: HH:mm
//       LongTimePattern: HH:mm:ss
//       FullDateTimePattern: dddd, MMMM dd, yyyy HH:mm:ss


El ejemplo utiliza una expresión regular para modificar la cadena de formato. Se define el modelo de expresión regular @"^(?<openAMPM>\s*t+\s*)? (?(openAMPM) h+(?<nonHours>[^ht]+)$ | \s*h+(?<nonHours>[^ht]+)\s*t+) como sigue:

Modelo

Descripción

^

Iniciar la búsqueda de coincidencias con el principio de la cadena.

(?<openAMPM>\s*t+\s*)?

Buscar cero o una aparición de cero o más caracteres de espacio en blanco, seguida de la letra “T” una o más veces, seguidas de cero o más caracteres de espacio en blanco. Se llama a este grupo de captura openAMPM.

(?(openAMPM) h+(?<nonHours>[^ht]+)$

Si el grupo openAMPM tiene una coincidencia, haga juego la letra “h” una o más veces, seguidas de uno o más caracteres que sean ni “h” ni “t”. Los extremos de búsqueda al final de la cadena. Todos los caracteres capturados después de la “h” se incluye en un grupo de captura denominado nonHours.

| \s*h+(?<nonHours>[^ht]+)\s*t+)

Si el grupo openAMPM no tiene una coincidencia, haga juego la letra “h” una o más veces, seguidas de uno o más caracteres que sean ni “h” ni “t”, seguidos de cero o más caracteres de espacio en blanco. Finalmente, buscar una o más apariciones de la letra “t”. Todos los caracteres capturados después de “h” y antes de espacios en blanco y “t” se incluyen en un grupo de captura denominado nonHours.

El grupo de captura nonHours contiene el minuto y posiblemente segundo componente de una cadena de formato de fecha y hora personalizado, junto con cualquier momento símbolos Separator. El modelo de reemplazo HH${nonHours} prepends la subcadena “HH” a estos elementos.

c6dw49cz.collapse_all(es-es,VS.110).gifMostrar y cambiando la era en una fecha

El ejemplo siguiente agrega el especificador de formato personalizado “g” a la propiedad LongDatePattern de un objeto que representa las convenciones de formato de la referencia cultural en-US. Este nuevo afecta a las tres siguientes cadenas de formato estándar:

  • La cadena de formato estándar “d” (fecha larga), que asigna directamente a la propiedad LongDatePattern .

  • La cadena de formato estándar “F” (fecha completa y hora corta), que genera una cadena de resultado que a concatenar las subcadenas generado por las propiedades LongDatePattern y ShortTimePattern .

  • La cadena de formato estándar “F” (fecha completa y hora larga), que asigna directamente a la propiedad FullDateTimePattern . Dado que no hemos establecido este valor de propiedad, se genera dinámicamente concatenando las propiedades LongDatePattern y LongTimePattern .

El ejemplo también muestra cómo cambiar el nombre de era para una referencia cultural cuyo calendario tiene una era. En este caso, la referencia cultural en-US utiliza el calendario gregoriano, representado por un objeto GregorianCalendar . La clase GregorianCalendar admite una era, que llama a D.C. (Anno Domini). El ejemplo cambia el nombre de la era a C.E. (Era común) reemplazando el especificador de formato personalizado “g” en la cadena de formato asignada a la propiedad FullDateTimePatterncon una cadena literal. El uso de una cadena literal es necesario, porque el nombre de era es devuelto normalmente por el método GetEraName de los datos privados de las tablas de la referencia cultural proporcionadas por .NET Framework o el sistema operativo Windows.


using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTime dateValue = new DateTime(2013, 5, 18, 13, 30, 0);
      String[] formats = { "D", "f", "F" };      

      CultureInfo enUS = CultureInfo.CreateSpecificCulture("en-US");
      DateTimeFormatInfo dtfi = enUS.DateTimeFormat;
      String originalLongDatePattern = dtfi.LongDatePattern;

      // Display the default form of three long date formats.
      foreach (var fmt in formats)
         Console.WriteLine(dateValue.ToString(fmt, dtfi));

      Console.WriteLine();

      // Modify the long date pattern.
      dtfi.LongDatePattern = originalLongDatePattern + " g";
      foreach (var fmt in formats)
         Console.WriteLine(dateValue.ToString(fmt, dtfi));

      Console.WriteLine();

      // Change A.D. to C.E. (for Common Era)
      dtfi.LongDatePattern = originalLongDatePattern + @" 'C.E.'";
      foreach (var fmt in formats)
         Console.WriteLine(dateValue.ToString(fmt, dtfi));

   }
}
// The example displays the following output:
//       Saturday, May 18, 2013
//       Saturday, May 18, 2013 1:30 PM
//       Saturday, May 18, 2013 1:30:00 PM
//       
//       Saturday, May 18, 2013 A.D.
//       Saturday, May 18, 2013 A.D. 1:30 PM
//       Saturday, May 18, 2013 A.D. 1:30:00 PM
//       
//       Saturday, May 18, 2013 C.E.
//       Saturday, May 18, 2013 C.E. 1:30 PM
//       Saturday, May 18, 2013 C.E. 1:30:00 PM


Cadenas de fecha y hora de análisis

El análisis implica convertir de representación de cadena de una fecha y hora en un valor DateTime o DateTimeOffset . Ambos tipos incluyen Parse, TryParse, ParseExact, y métodos TryParseExact para operaciones de análisis. Los métodos Parse y TryParse convierten una cadena que tenga diversos formatos, como ParseExact y TryParseExact requieren que la cadena tiene un formato o formatos definidos. Si se produce un error en la operación de análisis, Parse y ParseExact producen una excepción, mientras que TryParse y TryParseExact devuelven false.

Los métodos de análisis implícita o explícitamente un valor de enumeración DateTimeStyles para determinar los elementos de estilo (como conducir, arrastrarse, o espacios en blanco internos) pueden estar presentes en la cadena que se va a analizar, y cómo interpretar la cadena analizada o cualquier elemento que falta. Si no proporciona un valor DateTimeStyles al llamar al método Parse o TryParse , el valor predeterminado es DateTimeStyles.AllowWhiteSpaces, que es un estilo compuesto que incluye DateTimeStyles.AllowLeadingWhite, DateTimeStyles.AllowTrailingWhite, y las marcas DateTimeStyles.AllowInnerWhite . Para los métodos ParseExact y TryParseExact , el valor predeterminado es DateTimeStyles.None; la cadena de entrada debe corresponder exacto a una cadena personalizada determinada de formato de fecha y hora.

Los métodos de análisis también implícita o explícitamente un objeto DateTimeFormatInfo que define los símbolos y los modelos concretos que pueden aparecer en la cadena que se va a analizar. Si no proporciona un objeto DateTimeFormatInfo , el objeto DateTimeFormatInfo para la referencia cultural del subproceso actual se usa de forma predeterminada. Para obtener más información sobre cadenas de fecha y hora de análisis, vea los métodos individuales de análisis, como DateTime.Parse, DateTime.TryParse, DateTimeOffset.ParseExact, DateTimeOffset.TryParseExact.

El ejemplo siguiente muestra la naturaleza que tiene en cadenas de fecha y hora de análisis. Intenta analizar dos cadenas de fecha usando las convenciones de en-US, de en-GB, las referencias culturales fr-FR, y fi-FI. Fecha interpretado como 8/18/2014 de la referencia cultural en-US produce una excepción FormatException en las otras tres referencias culturales porque 18 se interpreta como número del mes. 1/2/2015 se analiza como segundo día del primer mes de la referencia cultural en-US, sino como el primer día del mes en las referencias culturales restantes.


using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] dateStrings = { "08/18/2014", "01/02/2015" };
      string[] cultureNames = { "en-US", "en-GB", "fr-FR", "fi-FI" };

      foreach (var cultureName in cultureNames) {
         CultureInfo culture = CultureInfo.CreateSpecificCulture(cultureName);
         Console.WriteLine("Parsing strings using the {0} culture.", 
                           culture.Name);
         foreach (var dateStr in dateStrings) {
            try {
               Console.WriteLine(String.Format(culture, 
                                 "   '{0}' --> {1:D}", dateStr, 
                                 DateTime.Parse(dateStr, culture)));
            }
            catch (FormatException) {
               Console.WriteLine("   Unable to parse '{0}'", dateStr);
            }
         }
      }
   }
}
// The example displays the following output:
//       Parsing strings using the en-US culture.
//          '08/18/2014' --> Monday, August 18, 2014
//          '01/02/2015' --> Friday, January 02, 2015
//       Parsing strings using the en-GB culture.
//          Unable to parse '08/18/2014'
//          '01/02/2015' --> 01 February 2015
//       Parsing strings using the fr-FR culture.
//          Unable to parse '08/18/2014'
//          '01/02/2015' --> dimanche 1 février 2015
//       Parsing strings using the fi-FI culture.
//          Unable to parse '08/18/2014'
//          '01/02/2015' --> 1. helmikuuta 2015


Las cadenas de fecha y hora se analizan normalmente por dos motivos:

  • Para convertir los datos proporcionados por el usuario en un valor de fecha y hora.

  • A la operación de ida y vuelta un valor de fecha y hora; es decir, para deserializar un valor de fecha y hora que se serializado previamente como cadena.

Las secciones siguientes describen estas dos operaciones con mayor detalle.

c6dw49cz.collapse_all(es-es,VS.110).gifCadenas de usuario de análisis

Al analizar cadenas de fecha y hora entradas por el usuario, debe crear instancias siempre un objeto DateTimeFormatInfo que refleja los entornos cultural del usuario, incluido cualquier personalización que el usuario haya creado. De lo contrario, el objeto de fecha y hora puede tener valores incorrectos. Para obtener información sobre cómo crear instancias un objeto DateTimeFormatInfo que refleja personalizaciones cultural del usuario, consulte la sección DateTimeFormatInfo y datos dinámicos .

El ejemplo siguiente muestra la diferencia entre una operación de análisis que refleje entornos cultural del usuario y otra que no lo haga. En este caso, la referencia cultural del sistema predeterminada es en-US, pero el usuario ha utilizado el Panel de control, Configuración regional y de idioma para cambiar el modelo de fecha corta de su valor predeterminado de “M/d/yyyy” a “yy/mm/dd”. Cuando el usuario escribe una cadena que refleje la configuración del usuario, y la cadena es analiza un objeto DateTimeFormatInfo que también refleje configuración de usuario (reemplaza), la operación de análisis devuelve un resultado correcto. Sin embargo, cuando la cadena analizada por un objeto DateTimeFormatInfo que refleja los entornos culturales estándar de en-US, el método de análisis produce una excepción porque interpreta 14 es el número del mes, no los dos dígitos últimos FormatException del año.


using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string inputDate = "14/05/10";

      CultureInfo[] cultures = { CultureInfo.GetCultureInfo("en-US"), 
                                 CultureInfo.CreateSpecificCulture("en-US") };

      foreach (var culture in cultures) {
         try {
            Console.WriteLine("{0} culture reflects user overrides: {1}", 
                              culture.Name, culture.UseUserOverride);
            DateTime occasion = DateTime.Parse(inputDate, culture);
            Console.WriteLine("'{0}' --> {1}", inputDate, 
                              occasion.ToString("D", CultureInfo.InvariantCulture));
         }
         catch (FormatException) {
            Console.WriteLine("Unable to parse '{0}'", inputDate);                           
         }   
         Console.WriteLine();  
      }
   }
}
// The example displays the following output:
//       en-US culture reflects user overrides: False
//       Unable to parse '14/05/10'
//       
//       en-US culture reflects user overrides: True
//       '14/05/10' --> Saturday, 10 May 2014


c6dw49cz.collapse_all(es-es,VS.110).gifLa serialización y deserialización de datos DateTime

Los datos serializados de fecha y hora se esperan la operación de ida y vuelta; es decir, todos los valores serializados y deserializados deben ser idénticos. Si un valor de fecha y hora representa un único momento, el valor deserializado debe representar el mismo momento sin tener en cuenta la referencia cultural o la zona horaria del sistema donde estaba restaurada. A los datos ida y vuelta de fecha y hora correctamente, debe usar las convenciones de la referencia cultural, que devuelve la propiedad InvariantInfo , para generar y analizar los datos. Las operaciones de formato y análisis nunca deberían reflejar las convenciones de la referencia cultural predeterminada. Si utiliza entornos culturales predeterminados, portabilidad de datos se limita estrictamente; posible deserializada correctamente si un subproceso cuyos valores cultural- específicos son idénticos a los del subproceso donde se serializada. En algunos casos, esto significa que los datos pueden ni siquiera serializar correctamente y deserializar en el mismo sistema.

Si el componente de hora de un valor de fecha y hora es significativo, también debe convertirse en hora UTC y serializarse con “o” o “r” cadena de formato estándar. Los datos de tiempo podrán restaurarse llamando a un método de análisis y pásele la cadena de formato adecuada junto con la referencia cultural invariable como argumento provider .

El ejemplo siguiente muestra el proceso de las acciones de un valor de fecha y hora. Serializa una fecha y hora en un sistema que advierta hora del Pacífico de EE.UU. y cuya referencia cultural actual es en-US.


using System;
using System.Globalization;
using System.IO;

public class Example
{
   public static void Main()
   {
      StreamWriter sw = new StreamWriter(@".\DateData.dat");
      // Define a date and time to serialize.
      DateTime originalDate = new DateTime(2014, 08, 18, 08, 16, 35);
      // Display information on the date and time.
      Console.WriteLine("Date to serialize: {0:F}", originalDate);
      Console.WriteLine("Current Culture:   {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("Time Zone:         {0}", 
                        TimeZoneInfo.Local.DisplayName);
      // Convert the date value to UTC.
      DateTime utcDate = originalDate.ToUniversalTime();
      // Serialize the UTC value.
      sw.Write(utcDate.ToString("o", DateTimeFormatInfo.InvariantInfo));
      sw.Close();
   }
}
// The example displays the following output:
//       Date to serialize: Monday, August 18, 2014 8:16:35 AM
//       Current Culture:   en-US
//       Time Zone:         (UTC-08:00) Pacific Time (US & Canada)


Deserializa los datos en un sistema de la zona horaria de Bruselas, de Copenhague, de Madrid y París y cuya referencia cultural actual es fr-FR. Fecha restaurada es nueve horas después de la fecha original, que refleja el ajuste de la zona horaria a partir de ocho horas subyacente UTC a una hora delante UTC. Tanto la fecha original y la fecha restaurada representan el mismo punto temporal.


using System;
using System.Globalization;
using System.IO;

public class Example
{
   public static void Main()
   {
      // Open the file and retrieve the date string.
      StreamReader sr = new StreamReader(@".\DateData.dat");             
      String dateValue = sr.ReadToEnd();

      // Parse the date.
      DateTime parsedDate = DateTime.ParseExact(dateValue, "o", 
                            DateTimeFormatInfo.InvariantInfo);
      // Convert it to local time.                             
      DateTime restoredDate = parsedDate.ToLocalTime();
      // Display information on the date and time.
      Console.WriteLine("Deserialized date: {0:F}", restoredDate);
      Console.WriteLine("Current Culture:   {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("Time Zone:         {0}", 
                        TimeZoneInfo.Local.DisplayName);
   }
}
// The example displays the following output:
//    Deserialized date: lundi 18 août 2014 17:16:35
//    Current Culture:   fr-FR
//    Time Zone:         (UTC+01:00) Brussels, Copenhagen, Madrid, Paris


La reflexión ejemplo siguiente se utiliza código para obtener las propiedades de objetos DateTimeFormatInfo para la referencia cultural Inglés (Estados Unidos). Muestra el valor de esas propiedades que contienen cadenas de formato personalizadas y usar esas cadenas para mostrar fechas con formato.


using System;
using System.Globalization;
using System.Reflection;

public class Example
{
   public static void Main()
   {
      // Get the properties of an en-US DateTimeFormatInfo object.
      DateTimeFormatInfo dtfi = CultureInfo.GetCultureInfo("en-US").DateTimeFormat;
      Type typ = dtfi.GetType();
      PropertyInfo[] props = typ.GetProperties();
      DateTime value = new DateTime(2012, 5, 28, 11, 35, 0); 

      foreach (var prop in props) {
         // Is this a format pattern-related property?
         if (prop.Name.Contains("Pattern")) {
            string fmt = prop.GetValue(dtfi, null).ToString();
            Console.WriteLine("{0,-33} {1} \n{2,-37}Example: {3}\n", 
                              prop.Name + ":", fmt, "",
                              value.ToString(fmt)); 
         }
      }
   }
}
// The example displays the following output:
//    FullDateTimePattern:              dddd, MMMM dd, yyyy h:mm:ss tt
//                                         Example: Monday, May 28, 2012 11:35:00 AM
//    
//    LongDatePattern:                  dddd, MMMM dd, yyyy
//                                         Example: Monday, May 28, 2012
//    
//    LongTimePattern:                  h:mm:ss tt
//                                         Example: 11:35:00 AM
//    
//    MonthDayPattern:                  MMMM dd
//                                         Example: May 28
//    
//    RFC1123Pattern:                   ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
//                                         Example: Mon, 28 May 2012 11:35:00 GMT
//    
//    ShortDatePattern:                 M/d/yyyy
//                                         Example: 5/28/2012
//    
//    ShortTimePattern:                 h:mm tt
//                                         Example: 11:35 AM
//    
//    SortableDateTimePattern:          yyyy'-'MM'-'dd'T'HH':'mm':'ss
//                                         Example: 2012-05-28T11:35:00
//    
//    UniversalSortableDateTimePattern: yyyy'-'MM'-'dd HH':'mm':'ss'Z'
//                                         Example: 2012-05-28 11:35:00Z
//    
//    YearMonthPattern:                 MMMM, yyyy
//                                         Example: May, 2012


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Todos los miembros públicos static (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.