2011-03-28 10 views
7

Estoy mostrando fechas cortas localizadas proporcionando información cultural al método DateTime.ToString. Por ahora estaba usandoDateTime.ToString formateando

x.ToString("d", ci); // 23.12.2000 

que muestra una fecha corta. Pero ahora me gustaría incluir también el nombre del día abreviado. Probé

x.ToString("ddd d", ci); // pon 23 

pero ahora se convierte en d especificador día en lugar de formato de fecha corta así que en vez del nombre día y fecha corta solo me dan nombre del día y el número de días.

¿Cómo convenzo al formateador para que se muestre el día junto con el formato de fecha corta cultural predefinido?

Respuesta

9

¿Qué tal:

string.Format(ci, "{0:ddd} {0:d}", x) 
+1

¿no debería ser "{0: ddd d}" para el formato? – Manatherin

+3

No, no funcionaría ya que eso volvería, para citar Robert "pon 23" en lugar de "pon 23.12.2000" –

+0

@Manatherin, no, eso tendría exactamente el mismo problema que el ejemplo en la pregunta original. Prefiero mi enfoque, pero Kristoffer también resuelve el problema de manera sucinta. –

0

Tome un vistazo a esta explicación:

http://www.csharp-examples.net/string-format-datetime/

tal vez pueda encontrar algunos ejemplos allí.

actualización

Como respuesta a la observación, el ejemplo 3 en el primer bloque de código establece claramente cómo hacer esto:

String.Format("{0:d dd ddd dddd}", dt); // "9 09 Sun Sunday" day 

buscar en Google una pregunta acerca de la fecha de formato de cadenas, y golpear a esta pregunta será mucho más valioso si hay una referencia a buenos ejemplos. De ahí la referencia al sitio csharp-examples.

+1

también copiar/pegar desde el primer resultado de Google no es conveniente. No creas que merecía un voto negativo por eso. La respuesta no es incorrecta, o pierde las preguntas. –

+2

Creo que se está perdiendo el sentido, la cuestión es cómo mostrar "ddd" seguido de la fecha corta completa en un formato cultural específico. Su muestra de código no hace esto. –

+0

La respuesta actualizada da una respuesta completamente incorrecta. Incluso se comenta con un resultado de ejemplo que es claramente incorrecto. Ni un solo ejemplo en el enlace dado responde la pregunta tampoco. La respuesta es incorrecta Y omite la pregunta. –

1
x.ToString("ddd ", ci) + x.ToString("d", ci); 
+0

Sí. Esto es lo que hice antes de obtener una gran respuesta aquí. –

0

Si nada más, usted podría: x.ToString("ddd", ci) + " " + x.ToString("d", ci);

4

Las cadenas de formato "estándar" funcionan mediante la obtención de la propiedad equivalente del CultureInfo 's DateTimeFormat. En este caso "d" encuentra la propiedad ShortDatePattern, que será algo así como "dd.MM.aaaa", "dd/MM/aaaa", "MM/dd/aaaa", "aaaa-MM-dd" y así sucesivamente, dependiendo en ese lugar en cuestión.

lo tanto usted puede hacer uso de ella en un patrón personalizado de este modo:

x.ToString("ddd " + ci.DateTimeFormat.ShortDatePattern, ci) // Sat 2000-12-23 on my set up, should presumably be pon 23.12.2000 on yours 
+0

+1 Totalmente me enseñó algo nuevo allí. Hubiera usado String.Format. Es bueno aprender las alternativas. – Kamal

+0

String.Format según @Kristoffer La respuesta de Jansson es una buena manera de despellejar al mismo gato, aunque lo anterior puede ser la única forma de lidiar con casos más complicados en los que desea pasar la cadena de un lugar a un ToString () llamar a otro (y por lo tanto no puede cambiar de ToString() a String.Format()). Y sí, es * bueno saber cómo funcionan los formatos estándar también :) –

+0

+1: Buen enfoque @Jon Hanna. –

Cuestiones relacionadas