Шаблон строки формата DateTime - PullRequest
3 голосов
/ 28 июля 2011

Может кто-нибудь подсказать мне правильную строку формата для отображения времени в следующем формате?

   Original: #7/28/2011 09:00:03 AM#
   Required Format: 9am

   //BUT if the minutes part contains a value I want it to look like this

   Original: #7/28/2011 09:21:03 AM#
   Required Format: 9:21am

Есть ли одна строка формата, которую я могу использовать для этого?

PS: Я пытался h:mmtt, но, как и ожидалось, это не дает мне то, что я хочу

Ответы [ 3 ]

4 голосов
/ 28 июля 2011

Форматирование строк не поможет. Вы хотите условно отформатировать строку на основе значения. Вам нужно будет самостоятельно проверить значение минут и применить соответствующую строку формата в зависимости от того, есть 0 минут или нет.

DateTime dateValue = DateTime.Parse("7/28/2011 09:00:03 AM");
string formattedString;
if (dateValue.Minute == 0)
    formattedString = dateValue.ToString(@"M/d/yyyy Htt");
else
    formattedString = dateValue.ToString(@"M/d/yyyy H:mmtt");
1 голос
/ 28 июля 2011

попробовать ~

string str = "7/28/2011 09:21:03 AM";
DateTime dt = DateTime.ParseExact(str, "M/dd/yyyy HH:mm:ss tt",CultureInfo.InvariantCulture);
Console.WriteLine(dt.Minute == 0 ? dt.ToString("HHtt"):dt.ToString("HH:mmtt"));
1 голос
/ 28 июля 2011

вам нужно написать логику для определения условия 00, где всякий раз, когда вы находите 00 в качестве минут, тогда возвращаете только значение часа, иначе возвращаются значения часов и минут, такие как

dtobj.Minute.Equals(00) ? dtobj.ToString("dd/MM/yy hhtt") : dtobj.ToString("dd/MM/yy hh:mmtt")
...