Compartilhar via


Sintaxe XAML DateTime

Alguns controles, como Calendar e DatePicker, têm propriedades que usam o tipo DateTime. Embora você normalmente especifique uma data ou hora inicial para esses controles no code-behind em tempo de execução, você pode especificar uma data ou hora inicial no XAML. O analisador XAML do WPF manipula a análise de valores DateTime usando uma sintaxe de texto XAML interna. Este tópico descreve as especificidades da sintaxe de texto XAML DateTime.

Quando usar a sintaxe DateTime XAML

Definir datas no XAML nem sempre é necessário e pode até não ser desejável. Por exemplo, você pode usar a propriedade DateTime.Now para inicializar uma data em tempo de execução ou fazer todos os ajustes de data para um calendário no code-behind com base na entrada do usuário. No entanto, há cenários em que talvez você queira codificar manualmente datas em um Calendar e DatePicker em um modelo de controle. A sintaxe XAML DateTime deve ser usada para esses cenários.

A sintaxe XAML DateTime é um comportamento nativo

DateTime é uma classe definida nas bibliotecas de classes base do CLR. Devido à forma como as bibliotecas de classe base se relacionam com o restante do CLR, não é possível aplicar TypeConverterAttribute à classe e usar um conversor de tipo para processar cadeias de caracteres de XAML e convertê-las em DateTime no modelo de objeto de tempo de execução. Não há nenhuma classe DateTimeConverter que forneça o comportamento de conversão; o comportamento de conversão descrito neste tópico é nativo para o analisador XAML do WPF.

Formatar cadeias de caracteres para sintaxe XAML datetime

Você pode especificar o formato de um DateTime com uma cadeia de caracteres de formato. Formatar cadeias de caracteres formalizam a sintaxe de texto que pode ser usada para criar um valor. Os valores de DateTime para os controles WPF existentes geralmente usam apenas os componentes de data de DateTime e não os componentes de hora.

Ao especificar um DateTime em XAML, você pode usar qualquer uma das cadeias de caracteres de formato de maneira intercambiável.

Você também pode usar formatos e formatar cadeias de caracteres que não são mostradas especificamente neste tópico. Tecnicamente, o XAML para qualquer valor de DateTime especificado e analisado pelo analisador XAML do WPF usa uma chamada interna para DateTime.Parse, portanto, você pode usar qualquer cadeia de caracteres aceita por DateTime.Parse para sua entrada XAML. Para obter mais informações, consulte DateTime.Parse.

Importante

A sintaxe XAML DateTime sempre usa en-us como o CultureInfo para sua conversão nativa. Isso não é influenciado pelo valor Language ou pelo valor xml:lang no XAML, pois a conversão de tipo em nível de atributo no XAML age sem esse contexto. Não tente interpolar as cadeias de caracteres de formato mostradas aqui devido a variações culturais, como a ordem em que dia e mês aparecem. As cadeias de caracteres de formato mostradas aqui são as cadeias de caracteres de formato exatas usadas ao analisar o XAML, independentemente de outras configurações de cultura.

As seções a seguir descrevem algumas das cadeias de caracteres de formato DateTime comuns.

Padrão de Data Curta ("d")

A seguir, é apresentado o formato de data curta para um DateTime no XAML:

M/d/YYYY

Essa é a forma mais simples que especifica todas as informações necessárias para usos típicos por controlos do WPF e não pode ser influenciada por desvios acidentais de fusos horários em relação a um componente de tempo, sendo, portanto, recomendada em relação a outros formatos.

Por exemplo, para especificar a data de 1º de junho de 2010, use a seguinte cadeia de caracteres:

3/1/2010

Para obter mais informações, consulte DateTimeFormatInfo.ShortDatePattern.

Padrão de data e hora classificável ("s")

O seguinte mostra o padrão DateTime que pode ser classificado em XAML:

yyyy'-'MM'-'dd'T'HH':'mm':'ss

Por exemplo, para especificar a data de 1º de junho de 2010, use a seguinte cadeia de caracteres (todos os componentes de hora são inseridos como 0):

2010-06-01T000:00:00

padrão RFC1123 ("r")

O padrão RFC1123 é útil porque pode ser uma entrada de texto de outros geradores de data que também usam o padrão RFC1123 por razões de invariância cultural. O seguinte mostra o padrão de RFC1123 DateTime em XAML:

ddd, dd MMM yyyy HH':'mm':'ss 'UTC'

Por exemplo, para especificar a data de 1º de junho de 2010, use a seguinte cadeia de caracteres (todos os componentes de hora são inseridos como 0):

Mon, 01 Jun 2010 00:00:00 UTC

Outros formatos e padrões

Conforme indicado anteriormente, um DateTime no XAML pode ser especificado como qualquer cadeia de caracteres aceitável como entrada para DateTime.Parse. Isso inclui outros formatos formalizados (por exemplo, UniversalSortableDateTimePattern) e formatos que não são formalizados como um formulário DateTimeFormatInfo específico. Por exemplo, o formulário YYYY/mm/dd é aceitável como entrada para DateTime.Parse. Este tópico não tenta descrever todos os formatos possíveis que funcionam e, em vez disso, recomenda o formato de data curta como prática padrão.

Consulte também