2010-06-11 2 views
7

Есть ли пятно способ преобразования простых чисел (включая время армии) в формат времени (am, pm формат)? Я могу сделать утомительный подход, но мне было просто интересно, если есть другой способПреобразование чисел во времени?

0800 => 8:00 утро

2317 => 11:17 вечер

+0

Что вы подразумеваете под «утомительным подходом»? DateTime.ParseExact() с поставщиком настраиваемого формата? – Odrade

+1

var time = DateTime.ParseExact («0800», «HHmm», CultureInfo.InvariantCulture); –

ответ

12
DateTime dt = DateTime.ParseExact("0800", "HHmm", CultureInfo.InvariantCulture); 
    string timestring = dt.ToString("h:mm tt"); 

См. documentation для кодов формата.

1

Надеется, что это указует вам в праве направление:

string time = "0800"; 
    DateTime dt = DateTime.ParseExact(string.Format("{0}:{1}", time.Substring(0, 2), time.Substring(2, 2)), "HH:mm", CultureInfo.InvariantCulture); 
    MessageBox.Show(string.Format("{0:h:mm tt}", dt)); 

    time = "2345"; 
    dt = DateTime.ParseExact(string.Format("{0}:{1}", time.Substring(0, 2), time.Substring(2, 2)), "HH:mm", CultureInfo.InvariantCulture); 
    MessageBox.Show(string.Format("{0:h:mm tt}", dt)); 
+0

Почему вы переформатируете строку в формате HH: mm, а не непосредственно в формате HHmm? –

+0

Хороший вопрос. Потому что я написал это быстро и не думал об этом. :) – Robaticus

+0

@Robaticus, а если время ввода было «23» (как 00:23)? Тогда ваш код будет генерировать исключение. –

1

Используйте DateTime.TryParse с нужной формой.

Если вы можете принять несколько форматов, то вам нужно будет позвонить по очереди, пока не найдете ту, которая соответствует, - я полагаю, это то, что вы подразумеваете под «утомительным подходом».

Смежные вопросы