C#: How do I convert a TimeSpan value to a double?
Solution 1
Despite how ambiguous this question is, for future reference, Umar was probably the closest to answering the question, as it was displayed in the title.
To get a double
from a TimeSpan
object, you need to pick the most significant measurement, and get the total. As the Total<x>
property, will return the appropriate full value, and the fractions of that value as a decimal.
So, if you want 8:15:00
, to a double
- and the "8"
represents Hours
, then you'll want TimeSpan.TotalHours
which will result in a value of 8.25.
If the "8"
represents Minutes
, then again, you'll use the appropriate property TimeSpan.TotalMinutes
for the same result, and so on.
Solution 2
You could use TimeSpan.TotalMinutes
(gets the value of the current TimeSpan
structure expressed in whole and fractional minutes) or other similar properties.
Solution 3
Do not repeat this at home!
double value = (timeSpan.Hours + timeSpan.Minutes / 100.0 + timeSpan.Seconds / 10000.0) * (timeSpan > TimeSpan.Zero ? 1 : -1);
user2037696
Updated on July 30, 2022Comments
-
user2037696 almost 2 years
How do I convert a
TimeSpan
value to adouble
in C#?I mean I have this
-08:15:00
and I want a double-08.15
. -
Umar Farooq Khawaja about 11 yearsThis won't be accurate because it will ignore Days, Hours and Milliseconds.
-
Anders M. over 9 yearsThank you for the quick reference, I wonder if OP was downvoted because of the wrong conversion from -08:15:00 to -08.15 instead of -08.25, the question itself is legit in itself. If you are making a system that is to be used by book keepers to manage salary based on how much you've worked you'll need something like this.
-
VMAtm about 7 years@UmarFarooqKhawaja Not
Hours
, actually -
Umar Farooq Khawaja about 7 yearsIndeed, @VMAtm!
-
Tohid over 2 yearshow about:
(timeSpan.Hours + timeSpan.Minutes / 60.0 + timeSpan.Seconds / 3600.0) * (timeSpan > TimeSpan.Zero ? 1 : -1);