Cadenas de formato personalizado DateTime

Se puede ejercer mayor control sobre la forma en que se da formato a un Objeto DateTime mediante especificadores de formato DateTime personalizados que se crean para la cadena de formato DateTime propia. Combine uno o más especificadores de formato personalizados para construir un modelo de formato DateTime que produce el resultado preferido. De hecho, la mayoría de los especificadores de formato DateTime estándar son alias para modelos de formato especificados en la clase DateTimeFormatInfo aplicable actualmente.

En la siguiente tabla se describen los especificadores de formato personalizado y los resultados que producen. La referencia cultural actual y las opciones de Configuración regional del Panel de control influyen en el resultado de estos especificadores de formato.

Especificador de formato Descripción
d Muestra el día del mes actual, medido como un número entre 1 y 31, ambos incluidos. Si el número de día es de un único dígito (1-9), se presenta como un único dígito.

Hay que tener en cuenta que si el especificador de formato 'd' se usa solo, sin otras cadenas de formato personalizado, se interpreta como el especificador de formato del modelo de fecha breve. Si el especificador de formato 'd' se pasa con otros especificadores de formato personalizado, se interpreta como un especificador de formato personalizado.

dd Muestra el día del mes actual, medido como un número entre 1 y 31, ambos incluidos. Si el número de día es de un único dígito (1-9), se le da formato colocando un 0 delante (01-09).
ddd Muestra la abreviatura del nombre del día para el objeto DateTime especificado. Si no se proporciona un proveedor de formato válido específico (un objeto no nulo que implemente IFormatProvider con la propiedad esperada), entonces se utiliza la propiedad AbbreviatedDayNames del objeto DateTimeFormat y su referencia cultural asociada al subproceso actual. En caso contrario, se utiliza la propiedad AbbreviatedDayNames del proveedor de formato especificado.
dddd (más cualquier número de caracteres adicionales "d") Muestra el nombre completo del día para el objeto DateTime especificado. Si no se proporciona un proveedor de formato válido específico (un objeto no nulo que implemente IFormatProvider con la propiedad esperada), entonces se utiliza la propiedad DayNames del objeto DateTimeFormat y su referencia cultural asociada al subproceso actual. En caso contrario, se utiliza la propiedad DayNames del proveedor de formato especificado.
f Muestra los segundos representados con un dígito.

Hay que tener en cuenta que si el especificador de formato 'f' se emplea solo, sin otras cadenas de formato personalizado, se interpreta como el especificador de formato completo (fecha larga y hora breve). Si el especificador de formato "f" se pasa con otros especificadores de formato personalizado o el carácter "%", se interpreta como un especificador de formato personalizado.

ff Muestra los segundos representados con dos dígitos.
fff Muestra los segundos representados con tres dígitos.
ffff Muestra los segundos representados con cuatro dígitos.
fffff Muestra los segundos representados con cinco dígitos.
ffffff Muestra los segundos representados en seis dígitos.
fffffff Muestra los segundos representados con siete dígitos.
g o gg (más cualquier número de caracteres adicionales "g") Muestra la era (por ejemplo, d. de C.) para el objeto DateTime especificado. Si no se proporciona un proveedor de formato válido específico (un objeto no nulo que implemente IFormatProvider con la propiedad esperada), entonces la era se determina mediante el calendario asociado al objeto DateTimeFormat y su referencia cultural asociada al subproceso actual.

Debemos tener en cuenta que si el especificador de formato 'g' se usa solo, sin otras cadenas de formato personalizado, se interpreta como el especificador de formato general estándar. Si el especificador de formato "g" se pasa con otros especificadores de formato personalizado o el carácter "%", se interpreta como un especificador de formato personalizado.

h Muestra la hora para el objeto DateTime especificado en el intervalo 1-12. La hora representa horas completas transcurridas desde medianoche (presentadas como 12) o desde mediodía (también presentadas como 12). Si este formato se usa solo, entonces no es posible distinguir las horas antes o después del mediodía que son iguales. Si la hora es de un único dígito (1-9), se presenta como un único dígito. No se realiza redondeo al mostrar la hora. Por ejemplo, un objeto DateTime de 5:43 devuelve 5.
hh, hh (más cualquier número de caracteres adicionales "h") Muestra la hora para el objeto DateTime especificado en el intervalo 1-12. La hora representa horas completas transcurridas desde medianoche (presentadas como 12) o desde mediodía (también presentadas como 12). Si este formato se usa solo, entonces no es posible distinguir las horas antes o después del mediodía que son iguales. Si la hora es de un único dígito (1-9), se le da formato colocando un 0 delante (01-09).
H Muestra la hora para el objeto DateTime especificado en el intervalo 0-23. La hora representa horas completas transcurridas desde medianoche (presentadas como 0). Si la hora es de un único dígito (0-9), se presenta como un único dígito.
HH, HH (más cualquier número de caracteres adicionales "H") Muestra la hora para el objeto DateTime especificado en el intervalo 0-23. La hora representa horas completas transcurridas desde medianoche (presentadas como 0). Si la hora es de un único dígito (0-9), se le da formato colocando un 0 delante (01-09).
m Muestra el minuto para el objeto DateTime especificado en el intervalo 0-59. El minuto representa minutos completos transcurridos desde la última hora. Si el número de minuto es de un único dígito (0-9), se presenta como un único dígito.

Hay que tener en cuenta que si el especificador de formato 'm' se utiliza solo, sin otras cadenas de formato personalizado, se interpreta como el especificador de formato del modelo de día del mes estándar. Si el especificador de formato "m" se pasa con otros especificadores de formato personalizado o el carácter "%", se interpreta como un especificador de formato personalizado.

mm, mm (más cualquier número de caracteres adicionales "m") Muestra el minuto para el objeto DateTime especificado en el intervalo 0-59. El minuto representa minutos completos transcurridos desde la última hora. Si el número de minutos es de un único dígito (0-9), se le da formato colocando un 0 delante (01-09).
M Muestra el mes actual, medido como un número entre 1 y 12, ambos incluidos. Si el número de mes es de un único dígito (1-9), se presenta como un único dígito.

Hay que tener en cuenta que si el especificador de formato 'M' se utiliza solo, sin otras cadenas de formato personalizado, se interpreta como el especificador de formato del modelo de día del mes estándar. Si el especificador de formato "M" se pasa con otros especificadores de formato personalizado o el carácter "%", se interpreta como un especificador de formato personalizado.

MM Muestra el mes actual, medido como un número entre 1 y 12, ambos incluidos. Si el mes es de un único dígito (1-9), se le da formato colocando un 0 delante (01-09).
MMM Muestra la abreviatura del nombre del mes para el objeto DateTime especificado. Si no se proporciona un proveedor de formato válido específico (un objeto no nulo que implemente IFormatProvider con la propiedad esperada), se utiliza la propiedad AbbreviatedMonthNames del objeto DateTimeFormat y su referencia cultural asociada al subproceso actual. En caso contrario, se utiliza la propiedad AbbreviatedMonthNames del proveedor de formato especificado.
MMMM Muestra el nombre completo del mes para el objeto DateTime especificado. Si no se proporciona un proveedor de formato válido específico (un objeto no nulo que implemente IFormatProvider con la propiedad esperada), entonces se utiliza la propiedad MonthNames del objeto DateTimeFormat y su referencia cultural asociada al subproceso actual. En caso contrario, se utiliza la propiedad MonthNames del proveedor de formato especificado.
s Muestra los segundos para el objeto DateTime especificado en el intervalo 0-59. El segundo representa segundos completos transcurridos desde el último minuto. Si el número de segundos es de un único dígito (0-9), se presenta como un único dígito.

Debemos tener en cuenta que si el especificador de formato 's' se utiliza solo, sin otras cadenas de formato personalizado, se interpreta como el especificador de formato del modelo de fecha y hora estándar que se puede ordenar. Si el especificador de formato "s" se pasa con otros especificadores de formato personalizado o el carácter %, se interpreta como un especificador de formato personalizado.

ss, ss (más cualquier número de caracteres adicionales "s") Muestra los segundos para el objeto DateTime especificado en el intervalo 0-59. El segundo representa segundos completos transcurridos desde el último minuto. Si el número de segundos es de un único dígito (0-9), se le da formato colocando un 0 delante (01-09).
t Muestra el primer carácter del designador a.m./p.m. del objeto DateTime especificado. Si no se proporciona un proveedor de formato válido específico (un objeto no nulo que implemente IFormatProvider con la propiedad esperada), entonces se utiliza la propiedad AMDesignator (o PMDesignator) del objeto DateTimeFormat y su referencia cultural asociada al subproceso actual. En caso contrario, se utiliza la propiedad AMDesignator (o PMDesignator) de la interfaz IFormatProvider especificada. Si el número total de horas completas pasado para el objeto DateTime especificado es menor de 12, se utiliza AMDesignator. En caso contrario, se emplea PMDesignator.

Hay que tener en cuenta que si el especificador de formato 't' se usa solo, sin otras cadenas de formato personalizado, se interpreta como el especificador de formato del modelo de hora larga estándar. Si el especificador de formato "t" se pasa con otros especificadores de formato personalizado o el carácter "%", se interpreta como un especificador de formato personalizado.

tt, tt (más cualquier número de caracteres adicionales "t") Muestra el designador a.m./p.m. del objeto DateTime especificado. Si no se proporciona un proveedor de formato válido específico (un objeto no nulo que implemente IFormatProvider con la propiedad esperada), entonces se utiliza la propiedad AMDesignator (o PMDesignator) del objeto DateTimeFormat y su referencia cultural asociada al subproceso actual. En caso contrario, se utiliza la propiedad AMDesignator (o PMDesignator) de la interfaz IFormatProvider especificada. Si el número total de horas completas pasado para el objeto DateTime especificado es menor de 12, se utiliza AMDesignator. En caso contrario, se emplea PMDesignator.
y Muestra el año para el objeto DateTime especificado como un número con un máximo de dos dígitos. Los dos primeros dígitos del año se omiten. Si el año es de un único dígito (1-9), se presenta como un único dígito.

Hay que tener en cuenta que si el especificador de formato "y" se usa solo, sin otras cadenas de formato personalizado, se interpreta como el especificador de formato del modelo de fecha breve. Si el especificador de formato "y" se pasa con otros especificadores de formato personalizado o el carácter "%", se interpreta como un especificador de formato personalizado.

yy Muestra el año para el objeto DateTime especificado como un número con un máximo de dos dígitos. Los dos primeros dígitos del año se omiten. Si el año es de un único dígito (1-9), se le da formato colocando un 0 delante (01-09).
yyyy Muestra el año para el objeto DateTime especificado, e incluye el siglo. Si el año tiene una longitud menor de cuatro dígitos, entonces se colocan a la izquierda los ceros necesarios para que el año mostrado tenga cuatro dígitos.
z Muestra la diferencia horaria correspondiente a la zona horaria actual del sistema en horas completas. La diferencia horaria se muestra siempre mediante un signo inicial (cero aparece como "+0"), e indica las horas posteriores a la hora media de Greenwich (+) o las horas anteriores a la hora media de Greenwich (-). El intervalo de valores es de –12 a +13. Si el desplazamiento es de un único dígito (0-9), se muestra como un único dígito con el signo inicial apropiado. La configuración para la zona horaria se especifica como +X o –X siendo X la diferencia horaria en horas con respecto a la GMT (Greenwich Mean Time, Hora media de Greenwich). El horario de verano afecta a la diferencia horaria mostrada.
zz Muestra la diferencia horaria correspondiente a la zona horaria actual del sistema en horas completas. La diferencia horaria se muestra siempre mediante un signo inicial o final (cero aparece como "+00"), e indica las horas posteriores a la hora media de Greenwich (+) o las horas anteriores a la hora media de Greenwich (-). El intervalo de valores es de –12 a +13. Si el desplazamiento es de un único dígito (0-9), se le aplica un formato con un 0 delante (01-09) con el signo inicial apropiado. La configuración para la zona horaria se especifica como +X o –X siendo X la diferencia horaria en horas con respecto a la GMT (Greenwich Mean Time, Hora media de Greenwich). El horario de verano afecta a la diferencia horaria mostrada.
zzz, zzz (más cualquier número de carácteres adicionales "z") Muestra la diferencia horaria correspondiente a la zona horaria actual del sistema en horas y minutos. La diferencia horaria se muestra siempre mediante un signo inicial o final (cero aparece como "+00:00"), e indica las horas posteriores a la hora media de Greenwich (+) o las horas anteriores a la hora media de Greenwich (-). El intervalo de valores es de –12:00 a +13:00. Si el desplazamiento es de un único dígito (0-9), se le aplica un formato con un 0 delante (01-09) con el signo inicial apropiado. La configuración para la zona horaria se especifica como +X o –X siendo X la diferencia horaria en horas con respecto a la GMT (Greenwich Mean Time, Hora media de Greenwich). El horario de verano afecta a la diferencia horaria mostrada.
: Separador de hora.
/ Separador de fecha.
" Cadena entrecomillada. Muestra el valor literal de cualquier cadena entre comillas, precedido del carácter de escape (/).
' Cadena entrecomillada. Muestra el valor literal de cualquier cadena entre dos caracteres " ' ".
%c Cuando c es un especificador de formato estándar y uno personalizado, muestra el modelo de formato personalizado asociado al carácter de formato.

Debemos tener en cuenta que si el especificador de formato se utiliza solo como carácter único, se interpreta como especificador de formato estándar. Solamente los especificadores de formato que constan de uno o más caracteres se interpretan como especificadores de formato personalizado. Para mostrar el formato personalizado de un especificador definido como especificador de formato personalizado y estándar, anteponga el símbolo % al especificador.

\c Donde c es cualquier carácter, el carácter de escape muestra el carácter siguiente como un literal. El carácter de escape no se puede utilizar para crear una secuencia de escape (como "\n" para nueva línea) en este contexto.
Cualquier otro carácter Otros caracteres se escriben directamente en la cadena de salida como literales.

Cuando se pasa un modelo personalizado a DateTime.ToString, el modelo debe tener como mínimo dos caracteres. Si sólo se pasa "d", Common Language Runtime lo interpreta como un especificador de formato estándar porque todos los especificadores de formato únicos se interpretan como estándares. Si se pasa únicamente una "h", se inicia una excepción porque no hay un especificador de formato estándar "h". Para aplicar formato empleando sólo un formato único definido de forma personalizada, hay que incluir un espacio antes o después del especificador. Por ejemplo, la cadena de formato "h " se interpreta como una cadena de formato definida de forma personalizada.

En el siguiente ejemplo se muestra cómo crear cadenas con formato personalizado a partir de un objeto DateTime. En este ejemplo se toma como referencia cultural el inglés de Estados Unidos (en-US).

Dim MyDate As New DateTime(2000, 1, 1, 0, 0, 0)
Dim MyString As String = MyDate.ToString("dddd - d - MMMM")
' In the U.S. English culture, MyString has the value: 
' "Saturday - 1 - January".
MyString = MyDate.ToString("yyyy gg")
' In the U.S. English culture, MyString has the value: "2000 A.D.".
[C#]
DateTime MyDate = new DateTime(2000, 1, 1, 0, 0, 0);
String MyString = MyDate.ToString("dddd - d - MMMM");
// In the U.S. English culture, MyString has the value: 
// "Saturday - 1 - January".
MyString = MyDate.ToString("yyyy gg");
// In the U.S. English culture, MyString has the value: "2000 A.D.".

Vea también

Aplicar formato a tipos | System.DateTime | System.IFormatProvider | Ejemplos del resultado de cadenas de formato de fecha y hora personalizado | Cadenas de formato DateTime estándar |