Существует ли гладкий способ преобразовать простые числа (армейское включенное время) к формату времени (пополудни формат)? Я могу сделать утомительный подход, но я просто задавался вопросом, было ли иначе
0800 => 8:00
2317 => 23:17
DateTime dt = DateTime.ParseExact("0800", "HHmm", CultureInfo.InvariantCulture);
string timestring = dt.ToString("h:mm tt");
Надеюсь, это направит вас в нужном направлении:
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));
Используйте DateTime.TryParse
с нужной строкой формата.
Если вы можете принять несколько форматов, вам нужно будет вызывать каждый по очереди, пока не найдете подходящий - что, как я полагаю, вы имеете в виду под «утомительным подходом».