Ввод пользователя 555 Я хочу, чтобы это было 05:55:00 (TimeSpan). Как преобразовать его в TimeSpan? Какой формат используется?Разбор 3-значного ввода как TimeSpan
var a = TimeSpan.ParseExact(/*user input string*/"5:55", new string[] { "%h\\:mm" }, CultureInfo.InvariantCulture);//OK output {05:55:00}
var b = TimeSpan.ParseExact(/*user input string*/"1111", new string[] { "%hmm" }, CultureInfo.InvariantCulture);//OK output {11:11:00}
var c = TimeSpan.ParseExact(/*user input string*/"555", new string[] { "%hmm", "hmm", "hhmm"}, CultureInfo.InvariantCulture);//Exception! None format works.
Редактировать: Подробнее Я хочу отформатировать строку пользовательской строки в часах и минутах hh: mm. Например, пользовательский ввод строки:
- "5", чтобы быть 5:00
- "12", чтобы быть 12:00
- "1111", чтобы быть 11:11
- "12:12", чтобы быть 12:12
- "4:44", чтобы быть 4:44
- и один не работает "555", чтобы быть 5:55 (бросает исключение)
прямо сейчас я использую:
private static string[] _foramts = {"%hmm", "hmm", "hhmm","%h", "hh\\:mm", "%h\\:mm" };
return TimeSpan.ParseExact((string)value, _foramts, CultureInfo.InvariantCulture).ToString("hh\\:mm");
с PadLeft, теперь не является исключением, но ....
var d = TimeSpan.ParseExact(((string)value).PadLeft(4, '0'), new string[] { "%hmm", "hmm", "hhmm", "%h", "hh\\:mm", "%h\\:mm" }, CultureInfo.InvariantCulture).ToString("hh\\:mm");
"5" теперь 00:05, и я хочу, чтобы это было 05:00
Я думаю, что вам придется сделать это вручную, получите ввод как 'string' и выполните некоторую * подстроку * или используйте его как' int' и выполните некоторые '%' и '/', чтобы получить требуемые цифры. – Luiso
Это уже строка. Я только нашел решение, но не по формату. Просто сделайте: '.PadLeft (4, '0')' с вводом пользовательской строки. – gurth
Это действительно плохой метод, но работает: TimeSpan ts = TimeSpan.FromSeconds ((60 * (int) (int.Parse (input)/100)) + (int.Parse (input)% 100)); – jdweng