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

28,265

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);
Share:
28,265
user2037696
Author by

user2037696

Updated on July 30, 2022

Comments

  • user2037696
    user2037696 almost 2 years

    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.

  • Umar Farooq Khawaja
    Umar Farooq Khawaja about 11 years
    This won't be accurate because it will ignore Days, Hours and Milliseconds.
  • Anders M.
    Anders M. over 9 years
    Thank 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
    VMAtm about 7 years
    @UmarFarooqKhawaja Not Hours, actually
  • Umar Farooq Khawaja
    Umar Farooq Khawaja about 7 years
    Indeed, @VMAtm!
  • Tohid
    Tohid over 2 years
    how about: (timeSpan.Hours + timeSpan.Minutes / 60.0 + timeSpan.Seconds / 3600.0) * (timeSpan > TimeSpan.Zero ? 1 : -1);