2013-04-27 84 views
0

如何在C#中将TimeSpan值转换为doubleC#:如何将TimeSpan值转换为double?

我的意思是我有这个-08:15:00,我想要双重-08.15

+12

你为什么要这么做? 8分15秒*不等于8.15分钟。 – 2013-04-27 13:58:21

+0

@KirkWoll:像22.3946那样代表22°39'46“这样的角度并不是闻所未闻的,所以也许这就是OP所要求的。 – Gabe 2013-04-27 14:11:53

+0

所有事情都考虑到了,你的问题最好是模棱两可的。是8:15:00 h/m/s,还是m/s/ms?是否真的意味着8:15:00 - > 8.15,还是应该是8:15:00 - > 8.25? – 2014-09-29 08:57:54

回答

-1

可以使用的String.Format,然后分析它是这样的:

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

在家里不要重复这个!

double value = (timeSpan.Hours + timeSpan.Minutes/100.0 + timeSpan.Seconds/10000.0) * (timeSpan > TimeSpan.Zero ? 1 : -1); 
+0

这是不准确的,因为它会忽略 – 2013-04-27 14:00:44

+1

@UmarFarooqKhawaja不是'小时',实际上 – VMAtm 2017-03-21 16:54:24

+0

的确,@VMAtm! – 2017-03-28 19:43:19

3

你可以使用TimeSpan.TotalMinutes(获取整数和分数分钟表示当前TimeSpan结构的值)或其他类似properties

8

尽管这个问题有多么模棱两可,为了将来的参考,奥马尔可能是最接近回答这个问题的,因为它在标题中显示。

要从TimeSpan对象中获得double对象,您需要选择最重要的测量值并获取总和。由于Total<x>属性将返回相应的完整值,并将该值的分数作为小数返回。

所以,如果你想8:15:00,到double - 和"8"代表Hours,那么你会希望TimeSpan.TotalHours这将导致8.25的数值。

如果"8"代表Minutes,那么您将再次使用适当的属性TimeSpan.TotalMinutes获得相同的结果,依此类推。

+0

感谢您的快速参考,我想知道OP是否因-08:15:00到-08.15的转换错误而被低估而不是-0.8.25,这个问题本身就是合法的。如果你正在制作一个系统,供图书管理员根据你工作的多少来管理工资,你需要这样的东西。 – 2014-10-08 20:30:59