¿Cómo puedo obtener formatos de fecha y hora basados ​​en información de cultura?

Lo que quiero es … Si la cultura es en-US entonces

string dateFormat="MM/dd/yyyy"; string timeFormat="24.00 hrs"; 

Si la cultura es en-GB entonces

 string dateFormat="dd/mmyyyy"; string timeFormat="24.00 hrs"; 

y así sucesivamente para otros países ..

Ahora, ¿cómo obtengo estos valores de formato de fecha y hora? ¿Cuáles son las normas? ¿Cómo todos los países utilizan formatos de fecha / hora similares y cuáles no?

ok intenté esto: –

  DateTime myDate = new DateTime(); string us = myDate.ToString(new CultureInfo("en-US")); 

la cadena us obtiene el valor = 1/1/0001 12:00:00 AM

Ahora, ¿cómo extraigo “dd / mm / aaaa” y “24.00 hrs” fuera de esto … en mi columna de Formato de fecha en mi tabla … Quiero almacenar STRINGS como dd / mm / aaaa o mm / dd / yyyy NO fechas. En mi columna de TimeFormat en la tabla, los valores para ser tiendas también son STRINGS, como necesito almacenar “24: 00hrs” o “12: 00hrs”

¿Cómo hago esto ahora?

** usando ShorTimePattern devuelve estos valores como

 h:mm tt and HH:mm 

Si quiero almacenar los valores en mi DB exactamente como “24: 00hrs” y “12: 00hrs”, ¿cómo uso estos valores … h: mm tt y HH: mm cuál es para el formato de 24 horas y cuál para Formato de 12 horas? **

ok, también hay otro problema … Quiero que la información sobre el separador decimal y el separador de miles también se base en el CultureInfo … ¿cuál es la propiedad para eso?

Puede recuperar las cadenas de formato de la propiedad DateTimeFormat CultureInfo , que es una instancia de DateTimeFormatInfo . Esto a su vez tiene propiedades como ShortDatePattern y ShortTimePattern , que contienen las cadenas de formato:

 CultureInfo us = new CultureInfo("en-US"); string shortUsDateFormatString = us.DateTimeFormat.ShortDatePattern; string shortUsTimeFormatString = us.DateTimeFormat.ShortTimePattern; CultureInfo uk = new CultureInfo("en-GB"); string shortUkDateFormatString = uk.DateTimeFormat.ShortDatePattern; string shortUkTimeFormatString = uk.DateTimeFormat.ShortTimePattern; 

Si simplemente desea formatear la fecha / hora con CultureInfo , páselo como su IFormatter al convertir el DateTime en una cadena, usando el método ToString :

 string us = myDate.ToString(new CultureInfo("en-US")); string uk = myDate.ToString(new CultureInfo("en-GB")); 

// Prueba esto puede ayudar

 DateTime myDate = new DateTime(); string us = myDate.Now.Date.ToString("MM/dd/yyyy",new CultureInfo("en-US")); 

o

  DateTime myDate = new DateTime(); string us = myDate.Now.Date.ToString("dd/MM/yyyy",new CultureInfo("en-GB")); 

Puede echar un vistazo a la propiedad DateTimeFormat que contiene los formatos específicos de cultura.

Use un CultureInfo como este, desde MSDN:

 // Creates a CultureInfo for German in Germany. CultureInfo ci = new CultureInfo("de-DE"); // Displays dt, formatted using the CultureInfo Console.WriteLine(dt.ToString(ci)); 

Más información en MSDN . Aquí hay un enlace de todas las diferentes culturas.

Intente establecer un CultureInfo personalizado para CurrentCulture y CurrentUICulture :

 Globalization.CultureInfo customCulture = new Globalization.CultureInfo("en-US", true); customCulture.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd h:mm tt"; System.Threading.Thread.CurrentThread.CurrentCulture = customCulture; System.Threading.Thread.CurrentThread.CurrentUICulture = customCulture; DateTime newDate = System.Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd h:mm tt"));