Создайте пользовательский формат DateTime, соответствующий месту в.NET C#

Так что это кажется легким делом, но все же меня озадачило. Я хочу отобразить список строк для моего пользователя, основываясь на нескольких датах создания файла. Таким образом, в основном, отображать список DateTimes. Проблема в том, что вы хотите использовать пользовательский формат (что-то вроде 6/6/13 12:01 PM), но я хочу, чтобы часть даты отображала его по-разному в зависимости от того, как ваша система отображает дату (то есть британец будет отобразить эту дату как 6/5/13).

Я подумал, что мог бы просто построить две строки (одну для даты и одну для времени) и убедиться, что их дата имеет региональный формат, но по умолчанию 5/6/13 (только 6/6/2013) не существует: http://msdn.microsoft.com/en-us/library/az4se3k1.aspx

Затем я надеялся, что, возможно, будет работать функция DateTime.ToShortDateString(), но она также отображается как 06.05.2013.

Я знаю, что могу использовать совершенно другой формат, например такой: DateTime.ToString("M/d/yy h:mm tt"), но я не хочу фиксировать дату с месяцем до дня.

Я полагаю, что если я смогу что-нибудь выяснить, то я мог бы просто создать пользовательское время для Америки и Европы, а затем запросить у ОС время и дату, которое они отображают. Но это кажется чрезмерным. Какие-нибудь мысли?

2 ответа

Решение

System.Globalization.CultureInfo инвентарь IFormatProvider, так что вы можете предоставить CultureInfo объект в качестве параметра для ToString метод.

MSDN, кажется, есть пример именно того, что вы хотите.

Вы можете извлечь текущий формат ShortDate из текущей культуры, изменить его и использовать с ToString()

var currentDate = DateTime.Now;
var shortDateFormat = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
var newShortDateFormat = shortDateFormat.Replace("yyyy", "yy");
Console.WriteLine(currentDate.ToString(shortDateFormat));
Console.WriteLine(currentDate.ToString(newShortDateFormat));
Другие вопросы по тегам