Отработать мин и часы - PullRequest
5 голосов
/ 03 марта 2009

У меня есть минутное значение, и я хочу иметь 2 строковых значения: одно с количеством часов, а другое с минутами, например:

Значение - 121 минута

строки часов = 2
минуты строки = 1

Значение - 58 минут

часов строки = 0
минуты строки = 58

Как я могу решить это в C #?

Ответы [ 5 ]

34 голосов
/ 03 марта 2009
var span = System.TimeSpan.FromMinutes(121);
var hours = ((int)span.TotalHours).ToString();     
var minutes = span.Minutes.ToString();

ToString (), потому что вы запросили строковые значения ...

TotalHours - это полные часы в TimeSpan, они могут быть больше 24 (тогда как поле «Hours» имеет максимум 24)

Да, и подумал: зачем использовать TimeSpan, а не вычислять его самостоятельно? Поскольку TimeSpan уже отлажен и протестирован Microsoft, он имеет хороший чистый интерфейс (глядя на код, вы легко видите, что происходит, без необходимости мысленно выполнять вычисления) и легко распространяется на дальнейшие решения. (Вводить в секундах? Использовать TimeSpan.FromSeconds (). Хотите дней? Использовать span.TotalDays ...)

Обновление:

Я только что заметил ошибку в своем ответе: TotalHours возвращает дробное значение всех часов, поэтому мы должны усечь его до целого числа, прежде чем преобразовать его в строку.

8 голосов
/ 03 марта 2009

Используйте структуру Timespan и ее метод Parse .

2 голосов
/ 03 марта 2009
int value = 121;
int hours = value / 60; // 2
int minutes = value % 60; // 1

string strHours = hours.ToString();
string strMinutes = minutes.ToString();
1 голос
/ 03 марта 2009
int value = 121;
int hours = value / 60;
int minutes = value % 60;
0 голосов
/ 03 марта 2009
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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...