Подтвердить что ты не робот

Как я могу получать форматы даты и времени на основе информации о культуре?

Чего я хочу... Если культура является en-US, то

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

Если культура en-GB, то

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

и т.д. для других стран.

Теперь, как мне получить эти значения формата даты и времени? Каковы стандарты? Как все страны используют одинаковые форматы даты и времени, а какие нет?

ok Я пробовал это: -

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

string us получает value = 1/1/0001 12:00:00 AM

Теперь, как извлечь из этого "dd/mm/yyyy" и "24.00 hrs" из моей колонки Dateformat в моей таблице... Я хочу хранить STRINGS, такие как dd/mm/yyyy или mm/dd/yyyy NOT date..На моем столбце TimeFormat в таблице значения, которые должны быть в магазинах, тоже STRINGS, например, мне нужно сохранить либо "24: 00hrs", либо "12: 00hrs"

Как мне это сделать сейчас?

**, используя ShorTimePattern, возвращает эти значения как

h:mm tt and HH:mm

Если я хочу сохранить значения в моей БД точно так же, как "24: 00hrs" и "12: 00hrs", как использовать эти значения..h: mm tt и HH: mm какой из них предназначен для 24-часового формата и который для 12-часового формата? **

ok теперь есть и другая проблема... Я хочу, чтобы информация о десятичном разделителе и Thousand Separator тоже основывалась на CultureInfo... для чего это свойство?

4b9b3361

Ответ 1

Вы можете получить строки формата из свойства CultureInfo DateTimeFormat, который представляет собой экземпляр DateTimeFormatInfo. Это, в свою очередь, имеет такие свойства, как ShortDatePattern и ShortTimePattern, содержащие строки формата:

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;

Если вы просто хотите отформатировать дату/время с помощью CultureInfo, передайте его как ваш IFormatter при преобразовании DateTime в строку, используя ToString:

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

Ответ 2

//Попробуйте это, может помочь

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

или

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

Ответ 3

Вы можете взглянуть на свойство DateTimeFormat, которое содержит определенные для культуры форматы.

Ответ 4

Используйте CultureInfo, как это, из 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));

Дополнительная информация о MSDN. Здесь - ссылка всех разных культур.

Ответ 5

Попробуйте настроить пользовательский CultureInfo для CurrentCulture и 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"));