Создайте пользовательский формат 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));