2011-06-01 18 views
25

Estoy buscando una solución para obtener el formato de fecha y hora del sistema.¿Cómo obtener el formato de sistema de fecha y hora?

Por ejemplo: si obtengo DateTime.Now? ¿Qué formato de fecha y hora está usando? DD/MM/YYYY etc

+0

¿Desea obtener una fecha y hora en un formato específico? Entonces necesitamos saber el formato que desea ayudarlo. –

+0

Para que quede claro, DateTime.Now no tiene ningún formato. Es puro un número binario. – pm100

Respuesta

41

Si no se ha cambiado a otra parte, esto lo obtendrá:

string sysFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern; 

Si se utiliza una aplicación de Windows Forms, también puede buscar en el UICulture:

string sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern; 

Tenga en cuenta que DateTimeFormat es una propiedad de lectura-escritura, por lo que se puede cambiar .

+3

La llamada 'CultureInfo.CurrentCulture.DateTimeFormat;' no devuelve un valor de cadena. La llamada final debe ser 'string sysDateFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;' en caso de que esté buscando el formato de fecha corta del sistema. –

+0

@JoeAlmore - gracias por el comentario. Respuesta actualizada – Oded

1

La propiedad System.DateTime.Now devuelve un System.DateTime. Esto se almacena en la memoria en un formato binario que la mayoría de los programadores en la mayoría de las circunstancias no necesitan pensar. Cuando muestra un valor de DateTime o lo convierte en una cadena por cualquier otro motivo, se convierte según una cadena de formato, que puede especificar cualquier formato que desee.

En este último sentido, la respuesta a su pregunta "si obtengo DateTime.Now, ¿qué fecha y hora está utilizando?" es "no está utilizando ningún formato DateTime en absoluto, porque aún no lo ha formateado".

Especifique el formato llamando a una sobrecarga de ToString u (opcionalmente) si usa System.String.Format. También hay un formato predeterminado, por lo que no siempre tiene que especificar el formato. Si está preguntando cómo determinar el formato predeterminado, entonces debe ver la respuesta de Oded.

11

Las respuestas anteriores no son del todo correctas.

Tuve la situación de que mi hilo principal y mi hilo de interfaz de usuario se vieron obligados a estar en la cultura "en-US" (por diseño). formato de Windows Mi DateTime era "dd/mm/aaaa"

string sysFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern; 
string sysUIFormat = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern; 

regresaron "MM/dd/aaaa", pero quería conseguir mi formato real de Windows. La única forma en que pude hacerlo fue creando un hilo simulado.

System.Threading.Thread threadForCulture = new System.Threading.Thread(delegate(){}); 
string format = threadForCulture.CurrentCulture.DateTimeFormat.ShortDatePattern; 
Cuestiones relacionadas