Как отформатировать дату и время в приложении Windows Phone, например, в родном приложении для обмена сообщениями

Родное приложение для обмена сообщениями в Windows Phone 8 отображает дату и время следующим образом:

4/3, 8:31p

12/25, 10:01a

Когда я форматирую дату и время, используя String.Format("{0:d} {0:t}"), я получаю следующее:

4/3/2013 8:31 PM

12/25/2012 10:01 AM

Как я могу сделать его таким же кратким, как родное приложение для обмена сообщениями?


person Sharkman    schedule 04.04.2013    source источник
comment
Я забыл упомянуть, я хочу, чтобы он работал с разными странами.   -  person Sharkman    schedule 04.04.2013


Ответы (1)


Для этого представления нет строки стандартного формата даты и времени.

Хотя вы можете просто использовать это:

string.Format("{0:M/d, h:mmt}");

... Это не поможет, если ваше приложение используется в культуре, которая меняет порядок дня и месяца.

Ближайшее решение, вероятно, состоит в том, чтобы взять строки формата для вашей текущей культуры и соответствующим образом изменить, то есть:

var culture = (CultureInfo)CultureInfo.CurrentUICulture.Clone();
// Make the AM/PM designators lowercase
culture.DateTimeFormat.AMDesignator = culture.DateTimeFormat.AMDesignator.ToLower();
culture.DateTimeFormat.PMDesignator = culture.DateTimeFormat.PMDesignator.ToLower();

var dDateFormatPattern = culture.DateTimeFormat.ShortDatePattern;
var tDateFormatPattern = culture.DateTimeFormat.ShortTimePattern;

var dateCompact = dDateFormatPattern.Replace("yyyy", "")
    .Replace("MM", "M").Replace("dd", "d").Replace(" ", "")
    .Trim(culture.DateTimeFormat.DateSeparator.ToArray());

var timeCompact = tDateFormatPattern
    .Replace("hh", "h").Replace("tt", "t").Replace(" ", "");

Console.WriteLine(DateTime.Now.ToString(dateCompact + " " + timeCompact, culture));

>>> 4/4 3:03p

... В качестве альтернативы, возможно, вы могли бы просто проверить значение CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern и переключиться между шаблоном D/M и шаблоном M/D. Это не будет идеально для всех культур, но, по крайней мере, вы не получите неприятный сюрприз, когда столкнетесь с культурой, которая форматирует даты и время так, как вы никогда не ожидали!

person Simon MᶜKenzie    schedule 04.04.2013