Вопрос
У меня есть значение minute, и я хочу иметь 2 строковых значения, одно со количеством часов, а другое с минутами, например:
Значение - 121 минута
строка часов = 2
строка минут = 1
Продолжительность - 58 минут
строка hours = 0
строка минут = 58
Как я могу решить это на C #?
Решение
var span = System.TimeSpan.FromMinutes(121);
var hours = ((int)span.TotalHours).ToString();
var minutes = span.Minutes.ToString();
toString() используется потому, что вы запросили строковые значения ...
TotalHours - это полные часы в интервале времени, их может быть больше 24 (в то время как в поле "Часы" указано максимум 24).
Да, и еще, если подумать:Зачем использовать временной интервал, а не вычислять его самостоятельно?Поскольку TimeSpan уже отлажен и протестирован Microsoft, у него приятный чистый интерфейс (глядя на код, вы легко видите, что происходит, без необходимости мысленно выполнять вычисления), и он легко распространяется на дальнейшие решения.(У вас есть входные данные за считанные секунды?Используйте TimeSpan.FromSeconds().Хочешь прожить эти дни?Используйте интервал.Общее количество дней ...)
Обновить:
Я только что заметил ошибку в своем ответе:TotalHours возвращает дробное значение всех часов, поэтому мы должны усечь его до целого числа, прежде чем преобразовывать в строку.
Другие советы
Используйте структуру Timespan и ее Анализировать способ.
int value = 121;
int hours = value / 60; // 2
int minutes = value % 60; // 1
string strHours = hours.ToString();
string strMinutes = minutes.ToString();
int value = 121;
int hours = value / 60;
int minutes = value % 60;
int value = 121;
TimeSpan timeSpan = TimeSpan.FromMinutes(value);
// gives you the rounded down value of 2
int hours = timeSpan.Hours;
// gives you the minutes left of the hour
int minutes = value - (hours * 60);