user2037696
user2037696

Reputation: 1105

C#: How do I convert a TimeSpan value to a double?

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

Answers (5)

Soleil
Soleil

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

Digital_Utopia
Digital_Utopia

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

Umar Farooq Khawaja
Umar Farooq Khawaja

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

tukaef
tukaef

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

albattran
albattran

Reputation: 1907

You can use string.format, then parse it like this:

   double.Parse(string.Format("-HH.mm"))

Upvotes: -1

Related Questions