Reputation: 1105
How do I convert a TimeSpan
value to a double
in C#?
I mean I have this -08:15:00
and I want a double -08.15
.
Upvotes: 9
Views: 38917
Reputation: 7287
In the case of operations with DateTime
in its double
format obtained with .ToOADate()
, TimeSpan
must be converted to double
directly with .TotalDays
since the unit (1.0) for DateTime
is a day.
With a functional mindset:
public static class Extension
{
public static double ToDouble(this TimeSpan o) => o.TotalDays;
}
Upvotes: 0
Reputation: 856
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.
Upvotes: 19
Reputation: 3987
You could use TimeSpan.TotalMinutes
(gets the value of the current TimeSpan
structure expressed in whole and fractional minutes) or other similar properties.
Upvotes: 11
Reputation: 9214
Do not repeat this at home!
double value = (timeSpan.Hours + timeSpan.Minutes / 100.0 + timeSpan.Seconds / 10000.0) * (timeSpan > TimeSpan.Zero ? 1 : -1);
Upvotes: 3
Reputation: 1907
You can use string.format, then parse it like this:
double.Parse(string.Format("-HH.mm"))
Upvotes: -1