Конвертировать время в десятичное в C # - PullRequest
13 голосов
/ 02 декабря 2009

что мне нужно сделать, это две определенные строки, которые вводятся пользователем,

string in = "9:35"; //am
string out = "11:55"; //am

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

string total = "2:20"

тогда мне нужно преобразовать это в десятичное число ... итак, 2:20 будет

string decimal = "2.33";

Я не знаю, как это сделать, любая помощь будет признательна!

P.S: id также хотел бы иметь возможность вычислять общее количество часов, в которые они были зарегистрированы, по десятичному числу, так что в основном все наоборот

Ответы [ 3 ]

28 голосов
/ 02 декабря 2009
DateTime dt1 = DateTime.Parse("11:55");    
DateTime dt2 = DateTime.Parse("9:35");

double span = (dt1 - dt2).TotalHours;

Вам действительно нужен 2:20 или это просто промежуточный шаг?

Редактировать: Если вы хотите вернуться, вам просто нужно немного по математике. Возьмите остаток от десятичного числа и умножьте на 60, затем округлите. Это будут минуты, так что просто добавьте их к часам.

12 голосов
/ 06 января 2012

Или вы можете сделать так:

decimal dec = Convert.ToDecimal(TimeSpan.Parse("11:30").TotalHours);
// returns:  11.5
0 голосов
/ 02 декабря 2009

Как насчет этого?

TimeSpan inTime = new TimeSpan(9, 35, 0); //or TimeSpan.Parse("9:35");
TimeSpan outTime = new TimeSpan(11, 55, 0); //or TimeSpan.Parse("11:55");

TimeSpan total = outTime - inTime;

decimal timevalue = total.Hours + (total.Minutes > 0 ? total.Minutes/60 : 0);

string totalString = timevalue.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...