Share via


DateTime (Sintaxis XAML)

Algunos controles, como Calendar y DatePicker, tienen propiedades que utilizan el tipo DateTime. Aunque normalmente se especifica una fecha y hora inicial para estos controles en el código subyacente en tiempo de ejecución, puede especificar una fecha u hora inicial en XAML. El analizador de XAML de WPF controla el análisis de los valores DateTime mediante una sintaxis de texto XAML integrada. En este tema se describen los detalles de la sintaxis de texto XAML DateTime.

Cuándo usar la sintaxis XAML de DateTime

Establecer fechas en XAML no siempre es necesario y puede incluso no ser deseable. Por ejemplo, podría usar la propiedad DateTime.Now para inicializar una fecha en tiempo de ejecución, o bien podría realizar todos los ajustes de fecha de un calendario en el código subyacente de acuerdo con la entrada del usuario. Sin embargo, hay situaciones en las que puede querer codificar las fechas en un Calendar y DatePicker en una plantilla de control. La sintaxis XAML de DateTime debe usarse para estos escenarios.

La sintaxis XAML de DateTime es un comportamiento nativo

DateTime es una clase que se define en las bibliotecas de clases base de CLR. Debido a cómo se relacionan las bibliotecas de clases base con el resto de CLR, no es posible aplicar TypeConverterAttribute a la clase y usar un convertidor de tipos para procesar cadenas de XAML y convertirlas a DateTime en el modelo de objetos de tiempo de ejecución. No existe ninguna clase DateTimeConverter que proporcione el comportamiento de conversión; el comportamiento de conversión que se describe en este tema es nativo para el analizador de XAML de WPF.

Cadenas de formato para la sintaxis XAML de DateTime

Puede especificar el formato de DateTime con una cadena de formato. Las cadenas de formato formalizan la sintaxis de texto que puede usarse para crear un valor. Por lo general, los valores de DateTime de los controles de WPF existentes solo usan los componentes de fecha de DateTime y no los componentes de hora.

Al especificar DateTime en XAML, puede usar cualquiera de las cadenas de formato indistintamente.

También puede usar formatos y cadenas de formato que no se muestren específicamente en este tema. Técnicamente, el XAML para cualquier valor DateTime que se especifica y luego se analiza por el analizador XAML de WPF, utiliza una llamada interna a DateTime.Parse, por lo tanto, podría utilizar cualquier cadena aceptada por DateTime.Parse para su entrada XAML. Para obtener más información, vea DateTime.Parse.

Importante

La sintaxis XAML de DateTime siempre usa en-us como CultureInfo para su conversión nativa. Esto no se ve influenciado por el valor Language ni el valor xml:lang en el lenguaje XAML, porque la conversión de tipos de nivel de atributo XAML actúa sin ese contexto. No intente interpolar las cadenas de formato que se muestran aquí debido a las variaciones culturales, como el orden en que aparecen el día y el mes. Las cadenas de formato que se muestran aquí son las cadenas de formato exactas que se usan al analizar el lenguaje XAML, independientemente de otras configuraciones de referencias culturales.

En las siguientes secciones se describen algunas de las cadenas de formato DateTime comunes.

Patrón de fecha corta ("d")

A continuación se muestra el formato de fecha corta de un elemento DateTime en XAML:

M/d/YYYY

Se trata de la forma más simple que especifica toda la información necesaria para los usos típicos de los controles de WPF y no puede verse afectada por desfases accidentales de las zonas horarias en comparación con un componente de tiempo y, por tanto, es preferible a otros formatos.

Por ejemplo, para especificar la fecha 1 de junio de 2010, use la siguiente cadena:

3/1/2010

Para obtener más información, vea DateTimeFormatInfo.ShortDatePattern.

Patrón de DateTime ordenable ("s")

A continuación se muestra el patrón DateTime ordenable en XAML:

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

Por ejemplo, para especificar la fecha 1 de junio de 2010, use la siguiente cadena (todos los componentes de tiempo se especifican como 0):

2010-06-01T000:00:00

Patrón RFC1123 ("r")

El patrón RFC1123 resulta útil porque podría ser una cadena introducida desde otros generadores de fecha que también usan este patrón por motivos de invariabilidad de referencia cultural. A continuación se muestra el patrón RFC1123 DateTime en XAML:

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

Por ejemplo, para especificar la fecha 1 de junio de 2010, use la siguiente cadena (todos los componentes de tiempo se especifican como 0):

Mon, 01 Jun 2010 00:00:00 UTC

Otros formatos y patrones

Como se dijo anteriormente, un DateTime en XAML puede ser especificado como cualquier cadena que sea aceptable como entrada para DateTime.Parse. Esto incluye otros formatos formalizados (por ejemplo UniversalSortableDateTimePattern), y formatos que no están formalizados como una forma particular DateTimeFormatInfo. Por ejemplo, la forma YYYY/mm/dd es aceptable como entrada para DateTime.Parse. En este tema no se intentan describir todos los formatos posibles que funcionan, sino que se recomienda el patrón de fecha corta como procedimiento estándar.

Vea también