Вопрос

У меня есть значение 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top