Для этого представления нет строки стандартного формата даты и времени.
Хотя вы можете просто использовать это:
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