Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Classe DateTimeFormatInfo

Fornece informações específicas à cultura específica sobre o formato de valores de data e hora.

System.Object
  System.Globalization.DateTimeFormatInfo

Namespace:  System.Globalization
Assembly:  mscorlib (em mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class DateTimeFormatInfo : ICloneable, 
	IFormatProvider

O tipo DateTimeFormatInfo expõe os membros a seguir.

  NomeDescrição
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreDateTimeFormatInfoInicializa uma nova instância gravável da classe de DateTimeFormatInfo que é a cultura independentemente (invariável).
Superior

  NomeDescrição
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreAbbreviatedDayNamesObtém ou define uma matriz unidimensional do tipo String que contém os nomes abreviados cultura específicos dos dias da semana.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreAbbreviatedMonthGenitiveNamesObtém ou define uma matriz de cadeia de caracteres de nomes abreviados do mês associados ao objeto atual de DateTimeFormatInfo .
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreAbbreviatedMonthNamesObtém ou define uma matriz unidimensional de cadeia de caracteres que contém os nomes dos meses abreviados cultura específicos.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreAMDesignatorObtém ou define o designador de cadeia de caracteres por hora em que é “ante meridiem” antes do meio-dia ().
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreCalendarObtém ou define o calendário a ser usado para a cultura atual.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreCalendarWeekRuleObtém ou define um valor que especifica a regra é usada para determinar a primeira semana do calendário do ano.
Propriedade públicaMembro estáticoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreCurrentInfoObtém um objeto somente leitura de DateTimeFormatInfo que formatou os valores com base em cultura atual.
Propriedade públicaCompatível com o XNA FrameworkDateSeparatorObtém ou define a cadeia de caracteres que separa os componentes de uma data, isto é, o ano, mês, dia e o.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreDayNamesObtém ou define uma matriz unidimensional de cadeia de caracteres que contém os nomes completos cultura específicos dos dias da semana.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreFirstDayOfWeekObtém ou define o primeiro dia da semana.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreFullDateTimePatternObtém ou define a cadeia de caracteres de formato personalizada para um valor de longo prazo e de hora longo.
Propriedade públicaMembro estáticoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreInvariantInfoObtém o objeto somente leitura padrão de DateTimeFormatInfo que é invariável cultura independentemente ().
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreIsReadOnlyObtém um valor que indica se o objeto de DateTimeFormatInfo é somente leitura.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreLongDatePatternObtém ou define a cadeia de caracteres de formato personalizada para um valor a longo prazo.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreLongTimePatternObtém ou define a cadeia de caracteres de formato personalizada são avaliadas por muito tempo.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreMonthDayPatternObtém ou define a cadeia de caracteres de formato personalizada para um valor do mês e o dia.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreMonthGenitiveNamesObtém ou define uma matriz de cadeia de caracteres de nomes de meses associados ao objeto atual de DateTimeFormatInfo .
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreMonthNamesObtém ou define uma matriz unidimensional do tipo String que contém os nomes dos meses completos cultura específicos.
Propriedade públicaNativeCalendarNameObtém o nome nativo do calendário associado ao objeto atual de DateTimeFormatInfo .
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StorePMDesignatorObtém ou define o designador de cadeia de caracteres por hora em que é “POST meridiem” (depois do meio-dia).
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreRFC1123PatternObtém a cadeia de caracteres de formato personalizada para um valor de tempo que é baseada na especificação 1123 (RFC) de Request é Comments (IETF) do IETF.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreShortDatePatternObtém ou define a cadeia de caracteres de formato personalizada para um valor curto de data.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreShortestDayNamesObtém ou define uma matriz de cadeia de caracteres de nomes abreviados exclusivos os menores do dia associados ao objeto atual de DateTimeFormatInfo .
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreShortTimePatternObtém ou define o valor da cadeia de caracteres de formato personalizada por um curto período de tempo.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreSortableDateTimePatternObtém a cadeia de caracteres de formato personalizada para um valor de data e hora classificável.
Propriedade públicaCompatível com o XNA FrameworkTimeSeparatorObtém ou define a cadeia de caracteres que separa os componentes de hora, ou seja, hora, minutos, segundos e.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreUniversalSortableDateTimePatternObtém a cadeia de caracteres de formato personalizada para uma data e uma cadeia de caracteres de hora universal, classificáveis.
Propriedade públicaCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreYearMonthPatternObtém ou define a cadeia de caracteres de formato personalizada para um valor de ano e mês.
Superior

  NomeDescrição
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreCloneCria uma cópia superficial de DateTimeFormatInfo.
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreEquals(Object) Verifica se o objeto especificado é igual ao objeto atual. (Herdado de Object.)
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreGetAbbreviatedDayNameRetorna o nome reduzido a cultura específica do dia da semana especificado com base em cultura associada ao objeto atual de DateTimeFormatInfo .
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreGetAbbreviatedEraNameRetorna a cadeia de caracteres que contém o nome reduzido de foi especificada, se uma abreviação existe.
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreGetAbbreviatedMonthNameRetorna o nome reduzido a cultura específica do mês especificado com base em cultura associada ao objeto atual de DateTimeFormatInfo .
Método públicoCompatível com o XNA FrameworkGetAllDateTimePatterns()Retorna todos os padrões padrões que aos valores de data e hora podem ser formatados.
Método públicoCompatível com o XNA FrameworkGetAllDateTimePatterns(Char)Retorna todos os padrões que aos valores de data e hora podem ser formatados usando a cadeia de caracteres de formato padrão especificado.
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreGetDayNameRetorna o nome completo cultura específica do dia da semana especificado com base em cultura associada ao objeto atual de DateTimeFormatInfo .
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreGetEraRetorna o inteiro que representa a foi especificada.
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreGetEraNameRetorna a cadeia de caracteres que contém o nome da foi especificada.
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreGetFormatRetorna um objeto do tipo especificado que fornece um serviço de formatação de data e hora.
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreGetHashCodeServe como a função de hash padrão. (Herdado de Object.)
Método públicoMembro estáticoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreGetInstanceRetorna o objeto de DateTimeFormatInfo associado a IFormatProviderespecificado.
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreGetMonthNameRetorna o nome completo cultura específica do mês especificado com base em cultura associada ao objeto atual de DateTimeFormatInfo .
Método públicoGetShortestDayNameObtém o nome abreviado o mais curto de dia de um dia da semana especificado associada ao objeto atual de DateTimeFormatInfo .
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreGetType Obtém o Type da instância atual. (Herdado de Object.)
Método públicoMembro estáticoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreReadOnlyRetorna um wrapper somente leitura de DateTimeFormatInfo .
Método públicoSetAllDateTimePatternsDefine as cadeias de caracteres de formato personalizadas de data e hora que correspondem a uma cadeia de formato padrão especificada.
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilCom suporte em .NET para aplicativos da Windows StoreToStringRetorna uma string que representa o objeto atual. (Herdado de Object.)
Superior

As propriedades da classe de DateTimeFormatInfo contêm informações específicas à cultura específica para formatar ou valores de data e hora de análise como o seguinte:

  • Os padrões usados para formatar valores de data.

  • Os padrões usados para formatar valores de tempo.

  • Os nomes dos dias da semana.

  • Os nomes dos meses do ano.

  • Valores usados designadores A.M. e das 18h. o tempo.

  • O calendário em que as datas são expressas.

Nesta seção:

Criando uma instância de um objeto DateTimeFormatInfo

Um objeto de DateTimeFormatInfo pode representar as convenções de formatação de cultura invariável, de uma cultura específica, de uma cultura, ou neutra de cultura atual. Esta seção discute como criar uma instância de cada tipo de objeto de DateTimeFormatInfo .

c6dw49cz.collapse_all(pt-br,VS.110).gifCriando uma instância de um objeto DateTimeFormatInfo para a cultura invariável

A cultura invariável representa uma cultura insensível. É baseada no idioma inglês, mas não em qualquer região/país em inglês específicos. Embora os dados de culturas específicas podem ser dinâmicas e podem ser alterados para refletir novos convenções culturais ou preferências do usuário, os dados da cultura invariável não são alterados. Você pode criar uma instância de um objeto de DateTimeFormatInfo que representa as convenções de formatação de cultura invariável das seguintes maneiras:

  • Recuperando o valor da propriedade de InvariantInfo . O objeto retornado de DateTimeFormatInfo é somente leitura.

  • Chamando o construtor sem parâmetros de DateTimeFormatInfo . O objeto retornado de DateTimeFormatInfo é de leitura/gravação.

  • Recuperando o valor da propriedade de DateTimeFormat de CultureInfo objeto que é retornada pela propriedade de CultureInfo.InvariantCulture . O objeto retornado de DateTimeFormatInfo é somente leitura.

O exemplo a seguir usa cada um desses métodos para criar uma instância de um objeto de DateTimeFormatInfo que representa a cultura invariável. Em indica se o objeto é somente leitura.


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(pt-br,VS.110).gifCriando uma instância de um objeto DateTimeFormatInfo para uma cultura específica

Uma determinada cultura representa um idioma que seja falado em um país/região específicos. Por exemplo, os pt-br E.U. é uma determinada cultura que representa o idioma inglês falado nos Estados Unidos e, pt-br uma CA é uma determinada cultura que representa o idioma inglês falado no Canadá. Você pode criar uma instância de um objeto de DateTimeFormatInfo que representa as convenções de formatação de uma cultura específica das seguintes maneiras:

O exemplo a seguir ilustra cada um desses modos de criar uma instância de um objeto de DateTimeFormatInfo e indica se o objeto resultante é somente leitura.


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(pt-br,VS.110).gifCriando uma instância de um objeto DateTimeFormatInfo para uma cultura neutra

Uma cultura neutra representa uma cultura ou um idioma que é independente de um país/região; normalmente é o pai de uma ou mais valores específicos. Por exemplo, o FR é uma cultura neutra para o idioma francês e o pai da cultura franco- FR. Você pode criar uma instância de um objeto de DateTimeFormatInfo que representa as convenções de formatação de uma cultura neutra nas mesmas maneiras de criar um objeto de DateTimeFormatInfo que representa as convenções de formatação de uma determinada cultura. Além disso, você pode recuperar o objeto de DateTimeFormatInfo de uma cultura do ponto de recuperação de uma cultura neutra da propriedade de CultureInfo.Parent de uma cultura do específico e recuperação do objeto de DateTimeFormatInfo retornado pela propriedade de CultureInfo.DateTimeFormat . A menos que a cultura pai representar a cultura invariável, o objeto retornado de DateTimeFormatInfo é de leitura/gravação. O exemplo a seguir ilustra esses modos de criar uma instância de um objeto de DateTimeFormatInfo que representa uma cultura 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      


ObservaçãoObservação

Nas versões 1,0 do.NET Framework com .NET Framework 3.5, se você tentar recuperar um objeto de DateTimeFormatInfo que reflete as convenções de formatação de uma cultura neutra gerará uma exceção de NotSupportedException .

No entanto, uma cultura neutra não tiver informações específicas à cultura específica de formatação, porque é independente de um país/região específicos. Em vez de popular o objeto de DateTimeFormatInfo com valores genéricos, o .NET Framework retorna um objeto de DateTimeFormatInfo que reflete as convenções de formatação de uma cultura específica que é um filho da cultura neutra. Por exemplo, o objeto de DateTimeFormatInfo para a cultura neutra en reflete as convenções de formatação de cultura pt-br E.U., e o objeto de DateTimeFormatInfo para a cultura de FR reflete as convenções de formatação de cultura franco- FR.

Você pode usar o código como o seguinte para determinar as convenções de formatação de cultura específica que representam uma cultura neutra. O exemplo usa a reflexão para comparar as propriedades de DateTimeFormatInfo de uma cultura neutra com as propriedades de uma cultura específica filho. Considere dois calendários ser equivalentes se forem do mesmo tipo de calendário e, para calendários gregorianos, se as propriedades de GregorianCalendar.CalendarType têm 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(pt-br,VS.110).gifCriando uma instância de um objeto DateTimeFormatInfo para a cultura atual

Você pode criar uma instância de um objeto de DateTimeFormatInfo que representa as convenções de formatação da cultura atual das seguintes maneiras:

  • Recuperando o valor da propriedade de CurrentInfo . O objeto retornado de DateTimeFormatInfo é somente leitura.

  • Recuperando o valor da propriedade de DateTimeFormat do objeto de CultureInfo que é retornado pela propriedade de CultureInfo.CurrentCulture . O objeto retornado de DateTimeFormatInfo é somente leitura.

  • Chamando o método de GetInstance com um objeto de CultureInfo que representa a cultura atual. O objeto retornado de DateTimeFormatInfo é somente leitura.

O exemplo a seguir usa cada um desses métodos para criar uma instância de um objeto de DateTimeFormatInfo que representa as convenções de formatação da cultura atual. Em indica se o objeto é somente leitura.


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


Você pode criar um objeto gravável de DateTimeFormatInfo que representa as convenções de cultura atual do thread em uma destas maneiras:

  • Recuperando um objeto de DateTimeFormatInfo em qualquer uma das três maneiras anteriores e chamando o método de Clone em DateTimeFormatInfo retornado objeto. Isso cria uma cópia do objeto original de DateTimeFormatInfo , exceto que a propriedade de IsReadOnly é false.

  • Chamando o método de CultureInfo.CreateSpecificCulture para criar CultureInfo objeto que representa a cultura atual, e depois usando a propriedade de CultureInfo.DateTimeFormat para recuperar o objeto de DateTimeFormatInfo .

O exemplo a seguir ilustra cada modo de criar uma instância de um objeto de leitura/gravação de DateTimeFormatInfo e exibe o valor da propriedade de 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


No windows, o usuário pode substituir alguns dos valores de propriedade de DateTimeFormatInfo usados em operações de formatação e de análise com o aplicativo de Região e idioma no painel de controle. Por exemplo, um usuário cuja cultura é inglês (Estados Unidos) pode optar por exibir valores de hora longo usando um relógio de 24 horas (no formato HH:mm:ss) em vez de relógio de 12 horas padrão (no formato h:mm:ss tt). Todos os objetos de DateTimeFormatInfo recuperados em modos discutida anteriormente refletem essas substituições do usuário. Se isso for indesejável, você pode criar um objeto de NumberFormatInfo que não reflete substituições do usuário (e também é de leitura/gravação em vez de somente leitura) chamando o construtor de CultureInfo.CultureInfo(String, Boolean) e fornecendo um valor de false para o argumento de useUserOverride . O exemplo a seguir ilustra isto para um sistema cuja cultura atual seja inglês (Estados Unidos) e cujo padrão de hora longo foi alterado do padrão h:mm:ss tt para 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 e dados dinâmicos

Os dados com específicos para formatar a data e hora fornecidos pela classe de DateTimeFormatInfo são dinâmicos, assim como os dados culturais fornecidos pela classe de CultureInfo . Você não deve fazer suposições sobre a estabilidade de valores para objetos de DateTimeFormatInfo que são associados a objetos específicos de CultureInfo . Somente os dados fornecidos pela cultura invariável e pelo objeto associado de DateTimeFormatInfo são estáveis. Outros dados podem ser alterados entre sessões do aplicativo ou até mesmo quando seu aplicativo execute. Há quatro fontes principais de alteração:

  • Atualizações do sistema. As preferências culturais como o calendário preferido ou habituais os formatos de data e hora mudam com o passar do tempo. Quando isso ocorre, o Windows Update inclui alterações no valor da propriedade de DateTimeFormatInfo para uma determinada cultura.

  • Valores de substituição. A classe de CultureAndRegionInfoBuilder pode ser usada para substituir os dados de uma cultura existente.

  • Conectar as alterações nos valores de propriedade. Um número de propriedades específicas à cultura relacionados podem ser alterados em tempo de execução, que, por sua vez, faz com que dados de DateTimeFormatInfo a alteração. Por exemplo, a cultura atual pode ser modificada programaticamente ou por meio da ação do usuário. Quando isso ocorre, o objeto de DateTimeFormatInfo retornado pela propriedade de CurrentInfo alterações a um objeto associado à cultura atual. Da mesma forma, o calendário de uma cultura pode ser alterada, o que pode levar a alterações em valores de propriedade de vários DateTimeFormatInfo .

  • Preferências do usuário. Os usuários de seu aplicativo podem escolher substituir alguns dos valores associados à cultura atual do sistema com as opções regionais e de idioma no painel de controle. Por exemplo, os usuários podem escolher para exibir a data em um formato diferente. Se a propriedade de CultureInfo.UseUserOverride é definida como true, as propriedades do objeto de DateTimeFormatInfo são recuperadas também as configurações de usuário. Se as configurações de usuário são incompatíveis com a cultura associada ao objeto de CultureInfo (por exemplo, se o calendário selecionado não for um dos calendários indicados pela propriedade de OptionalCalendars ), os resultados dos métodos e os valores das propriedades serão indefinidos.

Para minimizar a possibilidade de dados inconsistentes, todas as propriedades usuário substituível de um objeto de DateTimeFormatInfo são inicializadas quando o objeto é criado. Ainda há uma possibilidade de inconsistência, como nem a criação do objeto ou o processo de substituição de usuário são atômica e os valores relevantes sejam alterados durante a criação do objeto. No entanto, essa situação deve ser muito raro.

Você pode controlar se as substituições de usuário são refletidas nos objetos de DateTimeFormatInfo que representam a mesma cultura que a cultura do sistema. A tabela a seguir lista os modos nos quais um objeto de DateTimeFormatInfo pode ser recuperado e indica se o objeto resultante reflete substituições do usuário.

Origem do objeto de CultureInfo e de DateTimeFormatInfo

Reflete substituições de usuário

Propriedade CultureInfo.CurrentCulture.DateTimeFormat

Sim

Propriedade DateTimeFormatInfo.CurrentInfo

Sim

Método CultureInfo.CreateSpecificCulture

Sim

Método CultureInfo.GetCultureInfo

Não

Construtor CultureInfo.CultureInfo(String)

Sim

Construtor CultureInfo.CultureInfo(String, Boolean)

Depende do valor do parâmetro de useUserOverride

A menos que haja um motivo convincente fazer algo diferente, você deve respeitar substituições do usuário quando você usa o objeto de DateTimeFormatInfo em aplicativos cliente formatar e analisar a entrada de usuário ou exibir dados. Para aplicativos para servidores ou aplicativos autônomos, você não deve. No entanto, se você estiver usando o objeto de DateTimeFormatInfo ou explicitamente ou implicitamente para manter a data e hora os dados na cadeia de caracteres formam, você deve usar um objeto de DateTimeFormatInfo que reflete as convenções de formatação de cultura invariável, ou você deve especificar uma cadeia de caracteres de formato personalizada de data e hora que você use independentemente da cultura.

Formatando datas e horas

Um objeto de DateTimeFormatInfo é usado implicitamente ou explicitamente em todas as operações de formatação de data e hora. Esses incluem chamadas aos seguintes métodos:

Todas as operações de formatação de data e hora usam uma implementação de IFormatProvider . A interface de IFormatProvider inclui um único método, IFormatProvider.GetFormat(Type). Esse método de retorno de chamada é transmitido para um objeto de Type que representa o tipo necessário fornecer informações de formatação. O método retorna uma instância desse tipo ou de null se não pode fornecer uma instância do tipo. O.NET Framework inclui duas implementações de IFormatProvider para formatação de datas e horas:

  • A classe de CultureInfo , que representa uma cultura específica (ou um idioma específico em um país/região específicos). Em uma operação de formatação de data e hora, o método de CultureInfo.GetFormat retorna o objeto de DateTimeFormatInfo associado à propriedade de CultureInfo.DateTimeFormat .

  • A classe de DateTimeFormatInfo , que fornece informações sobre as convenções de formatação da cultura associado. O método de DateTimeFormatInfo.GetFormat retorna uma instância do.

Se uma implementação de IFormatProvider não for fornecida para um método de formatação explicitamente, o objeto de CultureInfo retornada pela propriedade de CultureInfo.CurrentCulture que representa a cultura atual do thread é usada.

O exemplo a seguir ilustra a relação entre a interface de IFormatProvider e a classe de DateTimeFormatInfo em operações de formatação. Define uma implementação personalizada de IFormatProvider cujo método de GetFormat exibe o tipo do objeto solicitado pela operação de formatação. Se está solicitando um objeto de DateTimeFormatInfo , o método fornece o objeto de DateTimeFormatInfo para a cultura atual do thread. Como a saída de exemplo mostram, o método de Decimal.ToString(IFormatProvider) solicita um objeto de DateTimeFormatInfo para fornecer informações de formatação, enquanto as solicitações NumberFormatInfo do método de String.Format(IFormatProvider, String, Object[]) e objetos de DateTimeFormatInfo bem como uma implementação 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


Cadeias de caracteres de formato e propriedades DateTimeFormatInfo

O objeto de DateTimeFormatInfo inclui três tipos de propriedades que são usadas em operações de formatação com a data e hora:

cadeias de formato padrão de data e hora, como “d”, “D”, “f”, e “F- 2.0”, é o alias que correspondem às propriedades específicas do padrão do formato de DateTimeFormatInfo . A maioria de a data e a hora formato personalizado especificadores estão relacionados às cadeias de caracteres ou a subcadeia de caracteres que as inserções de uma operação de formatação no resultado passam. A tabela a seguir lista os especificadores padrão e personalizados de formato de data e hora e suas propriedades associadas de DateTimeFormatInfo . Para obter detalhes sobre como usar esses especificadores de formato, consulte Cadeias de caracteres de formato de data e hora padrão e Cadeias de caracteres de formato de data e hora personalizado. Observe que cada cadeia de caracteres de formato padrão corresponde a uma propriedade de DateTimeFormatInfo cujo valor é uma cadeia de caracteres de formato personalizada de data e hora. Os especificadores individuais nessa cadeia de caracteres de formato personalizada correspondem a por sua vez para outras propriedades de DateTimeFormatInfo . A tabela lista apenas as propriedades de DateTimeFormatInfo para que as cadeias de formato padrão são alias, e não lista as propriedades que podem ser acessadas por cadeias de caracteres de formato personalizadas atribuídas 2 essas propriedades alias. Além disso, a tabela exibe apenas os especificadores personalizados de formato que correspondem às propriedades de DateTimeFormatInfo .

Especificador de formato

Propriedades associadas

“d” (data abreviada; cadeia de formato padrão)

ShortDatePattern , para definir o formato geral da cadeia de caracteres de resultado.

“D” (a longo prazo; cadeia de formato padrão)

LongDatePattern , para definir o formato geral da cadeia de caracteres de resultado.

“f” (data/curto período de tempo completas; cadeia de formato padrão)

LongDatePattern , para definir o formato do componente de data da cadeia de caracteres de resultado.

ShortTimePattern , para definir o formato do componente de tempo da cadeia de caracteres de resultado.

F- “2.0” (data/hora longo completas; cadeia de formato padrão)

LongDatePattern , para definir o formato do componente de data da cadeia de caracteres de resultado.

LongTimePattern , para definir o formato do componente de tempo da cadeia de caracteres de resultado.

“g” (data/curto período de tempo gerais; cadeia de formato padrão)

ShortDatePattern , para definir o formato do componente de data da cadeia de caracteres de resultado.

ShortTimePattern , para definir o formato do componente de tempo da cadeia de caracteres de resultado.

“G” (data/hora longo gerais; cadeia de formato padrão)

ShortDatePattern , para definir o formato do componente de data da cadeia de caracteres de resultado.

LongTimePattern , para definir o formato do componente de tempo da cadeia de caracteres de resultado.

“M”, “m” (mês/dia; cadeia de formato padrão)

MonthDayPattern , para definir o formato geral da cadeia de caracteres de resultado.

“O”, “o” (data/hora de viagem de ida e volta; cadeia de formato padrão)

Nenhum.

“R”, “r” (RFC1123; cadeia de formato padrão)

RFC1123Pattern , para definir uma cadeia de caracteres de resultado que esteja em conformidade com o padrão de RFC 1123. A propriedade é somente leitura.

“s” (data/hora classificável; cadeia de formato padrão)

SortableDateTimePattern , para definir uma cadeia de caracteres de resultado que esteja em conformidade com o padrão ISO 8601. A propriedade é somente leitura.

“t” (curto período de tempo; cadeia de formato padrão)

ShortTimePattern , para definir o formato geral da cadeia de caracteres de resultado.

“T” (muitos hora; cadeia de formato padrão)

LongTimePattern , para definir o formato geral da cadeia de caracteres de resultado.

“u” (data/hora universal classificável; cadeia de formato padrão)

UniversalSortableDateTimePattern , para definir uma cadeia de caracteres de resultado que esteja em conformidade com o padrão ISO 8601 por hora universal coordenados. A propriedade é somente leitura.

“U” (data/hora universal completa; cadeia de formato padrão)

FullDateTimePattern , para definir o formato geral da cadeia de caracteres de resultado.

“S”, “s” (mês do ano; cadeia de formato padrão)

YearMonthPattern , para definir o formato geral da cadeia de caracteres de resultado.

DDD “” (especificador de formato personalizado)

AbbreviatedDayNames , para incluir o nome reduzido do dia da semana na cadeia de caracteres de resultado.

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

Chama o método de GetEraName para inserir o nome deles na cadeia de caracteres de resultado.

MMM “” (especificador de formato personalizado)

AbbreviatedMonthNames , para incluir o nome do mês abreviado na cadeia de caracteres de resultado.

MMMM “” (especificador de formato personalizado)

MonthNames ou MonthGenitiveNames, para incluir o nome completo de mês na cadeia de caracteres de resultado.

“t” (especificador de formato personalizado)

AMDesignator ou PMDesignator, para incluir o primeiro caractere do designator AM/PM na cadeia de caracteres de resultado.

tt “” (especificador de formato personalizado)

AMDesignator ou PMDesignator, para incluir o designator AM/PM completo na cadeia de caracteres de resultado.

“: ” (especificador de formato personalizado)

TimeSeparator , para incluir o separador de hora na cadeia de caracteres de resultado.

“/” (especificador de formato personalizado)

DateSeparator , para incluir o separador de data na cadeia de caracteres de resultado.

Modificando propriedades DateTimeFormatInfo

Você pode alterar a cadeia de caracteres de resultado gerada por cadeias de formato de data e hora alterando as propriedades associadas de um objeto gravável de DateTimeFormatInfo . Para determinar se um objeto de DateTimeFormatInfo é gravável, use a propriedade de IsReadOnly . Para personalizar dessa maneira um objeto de DateTimeFormatInfo :

  1. Crie uma cópia de leitura-gravação de um objeto de DateTimeFormatInfo cujas convenções de formatação você deseja alterar. (Consulte a seção de Criando uma instância de um objeto de DateTimeFormatInfo .)

  2. Modifique a propriedade ou as propriedades que são usadas para gerar a cadeia de caracteres de resultado desejado. (Para obter informações sobre como formatar propriedades de DateTimeFormatInfo de uso dos métodos para definir cadeias de caracteres de resultado, consulte a seção anterior, Propriedades das cadeias de formato e o DateTimeFormatInfo.)

  3. Use o objeto personalizado de DateTimeFormatInfo que você criou como o argumento de IFormatProvider em chamadas para formatar métodos.

Há duas outras maneiras de alterar o fomat de uma cadeia de caracteres de resultado:

  • Você pode usar a classe de CultureAndRegionInfoBuilder para definir uma cultura personalizado (uma cultura que tenha um nome exclusivo e que suplementa culturas existentes) ou a uma cultura de substituição (uma que é usada em vez de uma determinada cultura.) Você pode salvar e acessar essa cultura programaticamente à medida que você qualquer objeto de CultureInfo suporte do.NET Framework.

  • Se a cadeia de caracteres de resultado não é confidencial e a cultura não segue um formato predefinido, você pode usar uma cadeia de caracteres de formato personalizada de data e hora. Por exemplo, se você estiver serializando dados de data e hora no formato YYYYMMDDHHmmss, você pode gerar a cadeia de caracteres de resultado passando a cadeia de caracteres de formato personalizada para o método de DateTime.ToString(String) , e você pode converter a cadeia de caracteres de resultado de volta a um valor de DateTime chamando o método de DateTime.ParseExact .

c6dw49cz.collapse_all(pt-br,VS.110).gifAlterando o padrão de data abreviada

O exemplo a seguir altera o formato de uma cadeia de caracteres de resultado gerada pela cadeia de caracteres de formato padrão de “d” (data curto). Altera a propriedade associada de ShortDatePattern para os pt-br E.U. ou a cultura do inglês (Estados Unidos) de sua opção de “" m/d/aaaa” a “yyyy'- “mm” - “dd” e usa a cadeia de caracteres de formato padrão de “d” exibir a data ambos antes e depois da propriedade de ShortDatePattern é alterada.


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(pt-br,VS.110).gifAlterando o caractere separador de data

O exemplo a seguir altera o caractere de separador de data em um objeto de DateTimeFormatInfo que representa as convenções de formatação de cultura franco- FR. O exemplo usa a cadeia de caracteres de formato padrão de “g” para exibir a data ambos antes e depois da propriedade de DateSeparator é alterada.


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(pt-br,VS.110).gifAlterando abreviações do nome do dia e o padrão de data longa

Em alguns casos, o padrão de longo prazo, que normalmente exibe o nome do dia do mês inteiro e junto com o número do dia do mês e o ano, pode ser muito longo. O exemplo a seguir reduz o padrão de data por extenso da cultura pt-br E.U. retorna um número e a abreviação do nome de um dia de um caractere ou dia de dois caracteres, a abreviação do nome do dia, mês e ano. Faz o atribuir uma abreviações mais curtas day name na matriz de AbbreviatedDayNames , e a alteração da cadeia de caracteres de formato personalizada atribuído à propriedade de LongDatePattern . Isso afeta as cadeias de caracteres de resultado retornadas por cadeias de formato padrão de “D” e “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, a alteração na propriedade de LongDatePattern também afeta a propriedade de FullDateTimePattern , que define por sua vez a cadeia de caracteres de resultado retornado pela cadeia de caracteres de formato padrão de F- “2.0”. Para preservar o padrão completo original de data e hora, o exemplo a seguir reatribui a cadeia de caracteres de formato personalizada original atribuído à propriedade de FullDateTimePattern depois que a propriedade de LongDatePattern é alterada.

c6dw49cz.collapse_all(pt-br,VS.110).gifAlterando de um relógio de 12 horas para um relógio de 24 horas

Para muitas culturas no .NET Framework, a hora são expressas usando um relógio de 12 horas e um designator AM/PM. O exemplo a seguir define um método de ReplaceWith24HourClock que substitui a qualquer momento no formato que usa um relógio de 12 horas com um formato que usa um relógio 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


O exemplo a seguir usa uma expressão regular para alterar a cadeia de caracteres de formato. O @"^(?<openAMPM>\s*t+\s*)? (?(openAMPM) h+(?<nonHours>[^ht]+)$ | \s*h+(?<nonHours>[^ht]+)\s*t+) do padrão de expressão regular é definido da seguinte forma:

Padrão

Descrição

^

Inicie a correspondência no início da cadeia de caracteres.

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

Correspondência de zero ou uma ocorrência de zero ou mais caracteres de espaço em branco, seguida pela letra “t” uma ou mais vezes, seguidas por zero ou mais caracteres de espaço em branco. Este grupo capturando é denominado openAMPM.

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

Se o grupo de openAMPM tiver uma correspondência, corresponder à letra “h” uma ou mais vezes, seguido por um ou mais caracteres que não são “h” ou “t”. As extremidades de correspondência no final da cadeia de caracteres. Todos os caracteres capturados depois de “h” é incluído em um grupo capturando nomeada nonHours.

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

Se o grupo de openAMPM não tiver uma correspondência, corresponder à letra “h” uma ou mais vezes, seguido por um ou mais caracteres que não são “h” ou “t”, seguidos por zero ou mais caracteres de espaço em branco. Finalmente, a correspondência de uma ou mais ocorrências da letra “t”. Todos os caracteres capturados depois de “h” e antes dos espaços em branco e “t” são incluídas em um grupo capturando nomeada nonHours.

nonHours que captura o grupo contém o minuto e possivelmente o segundo componente de uma cadeia de caracteres de formato personalizada de data e hora, junto com qualquer momento em que os símbolos do separador. O padrão HH${nonHours} de substituição precede a subcadeia de caracteres “HH” a esses elementos.

c6dw49cz.collapse_all(pt-br,VS.110).gifExibindo e alterando a era uma data

O exemplo a seguir adiciona o especificador do formato “g” à propriedade de LongDatePattern de um objeto que representa as convenções de formatação de cultura pt-br E.U. Essa adição afeta as três cadeias de formato padrão:

  • A cadeia de caracteres de formato de data por extenso padrão () de “D”, que mapeia diretamente para a propriedade de LongDatePattern .

  • A cadeia de caracteres de formato padrão de “f” (data/curto período de tempo completo), que gerencia uma cadeia de caracteres de resultado que concatena as subcadeia de caracteres gerada pela propriedades de LongDatePattern e de ShortTimePattern .

  • A cadeia de caracteres de formato padrão de F- “2.0” (data/hora longo completo), que mapeia diretamente para a propriedade de FullDateTimePattern . Porque nós definirmos não explicitamente esse valor de propriedade, é gerado dinamicamente concatenando as propriedades de LongDatePattern e de LongTimePattern .

O exemplo também mostra como alterar o nome de destinado a uma cultura cujo calendário possui uma única fosse. Nesse caso, a cultura pt-br E.U. o usa o calendário gregoriano, que é representado por um objeto de GregorianCalendar . A classe de GregorianCalendar suporte a uma única que era, nomeie D.C. (Anno Domini). O exemplo a seguir altera o nome da foi C.E. (Foi comum) substituindo o especificador do formato “g” na cadeia de caracteres de formato atribuído à propriedade de FullDateTimePatterncom uma cadeia de caracteres literal. O uso de uma cadeia de caracteres literal é necessário, pois o nome da última normalmente é retornado pelo método de GetEraName de dados confidenciais nas tabelas de cultura fornecidas pelo.NET Framework ou pelo sistema operacional 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


Mantendo cadeias de caracteres de data e hora

A análise envolve converter a representação de cadeia de caracteres de uma data e hora para um valor de DateTime ou de DateTimeOffset . Ambos esses tipos incluem Parse, TryParse, ParseExact, e os métodos de TryParseExact para dar suporte a operações de análise. Os métodos de Parse e de TryParse converte uma cadeia de caracteres que pode ter uma variedade de formatos, enquanto que ParseExact e TryParseExact requerem que a cadeia de caracteres tem um formato ou formatos definidos. Se a operação de análise falha, Parse e ParseExact lança uma exceção, enquanto que TryParse e TryParseExact retornam false.

Os métodos de análise implicitamente ou usam explicitamente um valor de enumeração DateTimeStyles para determinar qual os elementos de estilo (como a esquerda, arraste, ou o espaço em branco interno) podem estar presentes na cadeia de caracteres a ser analisada, e como interpretar a cadeia de caracteres analisada ou todos os elementos ausentes. Se você não fornecer um valor de DateTimeStyles quando você chama o método de Parse ou de TryParse , a opção é DateTimeStyles.AllowWhiteSpaces, que é um estilo composto que inclui DateTimeStyles.AllowLeadingWhite, DateTimeStyles.AllowTrailingWhite, e sinalizadores de DateTimeStyles.AllowInnerWhite . Para os métodos de ParseExact e de TryParseExact , a opção é DateTimeStyles.None; a cadeia de caracteres de entrada deve corresponder com precisão em uma cadeia de formato personalizado específico de data e hora.

Os métodos de análise também usam implicitamente ou explicitamente um objeto de DateTimeFormatInfo que define os símbolos e os padrões específicos que podem ocorrer na cadeia de caracteres a ser analisada. Se você não fornecer um objeto de DateTimeFormatInfo , o objeto de DateTimeFormatInfo para a cultura atual do thread será usado por padrão. Para obter mais informações sobre cadeias de caracteres de data e hora da análise, consulte os métodos individuais da análise, como DateTime.Parse, DateTime.TryParse, DateTimeOffset.ParseExact, e o DateTimeOffset.TryParseExact.

O exemplo a seguir ilustra a natureza cultura confidencial de cadeias de caracteres de data e hora da análise. Tenta analisar duas cadeias de caracteres de data usando as convenções de pt-br E.U., de en-gb, ordenar valores franco- FR, e fi-fi. A data que é interpretada como 8/18/2014 em cultura pt-br E.U. lança uma exceção de FormatException em outras três valores como 18 são interpretados como o número do mês. 1/2/2015 são analisados como o segundo dia do primeiro mês em cultura pt-br E.U., mas como o primeiro dia do mês em valores 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


As cadeias de caracteres de data e hora são analisadas normalmente por duas razões:

  • Para converter a entrada do usuário em uma data e um valor de tempo.

  • A viagem de ida e volta um valor de data e hora; ou seja, para desserializar um valor de data e hora que é serializado anteriormente como uma cadeia de caracteres.

As seções a seguir discutem essas duas operações em mais detalhes.

c6dw49cz.collapse_all(pt-br,VS.110).gifAnalisando cadeias de caracteres do usuário

Quando você analisa a data e cadeias de caracteres de tempo inserido pelo usuário, você sempre deve criar uma instância de um objeto de DateTimeFormatInfo que reflete as configurações culturais de usuário, incluindo as personalizações que o usuário pode ter feito. Caso contrário, o objeto de tempo podem ter valores incorretos. Para obter informações sobre como criar uma instância DateTimeFormatInfo objeto que reflete as personalizações do usuário culturais, consulte a seção de DateTimeFormatInfo e dados dinâmicos .

O exemplo a seguir ilustra a diferença entre uma operação de análise que as configurações culturais de usuário e uma que não faz. Nesse caso, a cultura padrão do sistema é pt-br E.U., mas o usuário usa o painel de controle, Região e idioma para alterar o padrão de data abreviada da opção de “" m/d/aaaa” a “.” aa/mm/dd Quando o usuário inserir uma cadeia de caracteres que reflete as configurações de usuário, e a cadeia de caracteres é analisada por um objeto de DateTimeFormatInfo que também as configurações de usuário (substituições), a operação de análise retorna um resultado correto. No entanto, quando a cadeia de caracteres é analisada por um objeto de DateTimeFormatInfo que as configurações culturais de pt-br E.U. o standard, o método de análise gerencie uma exceção porque interpreta 14 como o número do mês, não os últimos dois dígitos de FormatException do ano.


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(pt-br,VS.110).gifSerializando e desserializando dados de data e hora

Os dados serializados de data e hora são esperados a viagem de ida e volta; ou seja, todos os valores serializados e desserializadas devem ser idênticos. Se um valor de data e hora representa um único momento, o valor é desserializada deve representar o mesmo momento independentemente da cultura ou de fuso horário do sistema em que foi restaurado. Para dados de data e hora de viagem de ida e volta com êxito, você deve usar as convenções de cultura invariável, que é retornada pela propriedade de InvariantInfo , para gerar e analisar os dados. As operações de formatação e análise de dados nunca devem refletir as convenções de cultura padrão. Se você usar configurações culturais padrão, a portabilidade de dados estará limitada estritamente; pode ser desserializado com êxito apenas em um thread cujas configurações cultural- específicas são idênticas às do thread em que foi serializado. Em alguns casos, isso significa que os dados podem nem mesmo com êxito ser serializados e desserializadas no mesmo sistema.

Se o componente de tempo de uma data e um valor de hora é significativo, deve ser convertido em UTC e ser serializado usando o “o” ou “r” cadeia de formato padrão. Os dados de tempo podem ser restaurados chamando um método de análise e passando à cadeia de caracteres de formato apropriado junto com a cultura invariável como o argumento de provider .

O exemplo a seguir ilustra o processo de redonda tropeçar um valor de data e hora. Serializa uma data e hora em um sistema que observem hora do pacífico de E.U. e cujo a cultura atual é pt-br E.U.


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)


Desserializa os dados em um sistema no fuso horário de Bruxelas, de Copenhaga, de Madri e de Paris e cuja cultura atual é franco- FR. A data é restaurada nove hora posterior à data original, que reflete o ajuste de fuso horário de oito horas atrás de UTC para uma hora antes de UTC. Ambas as data original e a data restaurada representam o mesmo momento.


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


A seguinte reflexão do exemplo utiliza para obter as propriedades do objeto de DateTimeFormatInfo para a cultura inglês (Estados Unidos). Exibe o valor das propriedades que contêm cadeias de caracteres de formato personalizadas e usa essas cadeias de caracteres para exibir datas formatadas.


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

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Biblioteca de Classes Portátil

Com suporte em: Biblioteca de Classes Portátil

.NET para aplicativos da Windows Store

Com suporte em: Windows 8

.NET para aplicativos do Windows Phone

Com suporte em: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Quaisquer membros estático (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft