Вопрос 1: Через парсер получаем строку "10д 5ч". (10 дней и 5 часов) Надо ее конвертировать и получить время в часах (10*24+5) и получить число 245. Пока что идея сделать через if и замену буквы на число, но это похоже на костыль, а не решение.
Вопрос 2: Число (int) надо конвертировать в дни и часы и вывести через TextView
Что подскажете?
За время в C# отвечает TimeSpan и с ним вам стоит работать.
Считываем значение:
У таких объектов, как TimeSpan
и DateTime
(а также их аналоги) есть два метода (Parse
и ParseExact
), которые как раз и отвечают за "чтение" времени из String
. Parse
будет полезен тогда, когда время идет в стандартном формате (по типу hh:mm:ss). ParseExact
в этом плане более гибкий и позволяет настраивать формат "парса" времени.
Воспользуемся ParseExact
:
var time = TimeSpan.ParseExact("10д 5ч", "d'д 'h'ч'", null);
Здесь мы разбили входные данные, отделив обычный текст от значений самого времени. Сами же значения заменяем на нужный нам формат. Также метод требует культуру, тут уже сами думайте, нужна она вам или нет...
Получаем необходимые данные:
получить время в часах (10*24+5) и получить число 245
При использование нужного типа данных мы с легкостью можем оперировать этими данными так, как заходим. В данном случае все, что вам нужно, это узнать значение свойства TotalHours
:
var totalHours = time.TotalHours;
Обратная конвертация:
Число (int) надо конвертировать в дни и часы
Для этого есть такие методы как FromHours()
. Принимают они double
значение и отдают TimeSpan
:
var result = TimeSpan.FromHours(totalHours);
Ну а как выводить, это уже смотрите сами. Обычно используется .ToString();
который может также принимать настраиваемый формат, так что просто поиграйтесь с этим и думаю поймете.
В общем удачи в изучении C#!
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я хочу сделать, чтоб при вводе данных в C# не выполнялся переход на новую строку в консоли, это возможно? Например, чтоб консоль выглядела не так:
Как программно в dataGridView сделать поле ComboBox?
пишу приложение WPF с веб сервисом wfc, в веб сервесе модель базы данных entity framework, когда пытаюсь передать запрос из клиента на добавление записи...