如何在c#中将字符串格式的时间转换为十进制?

时间:2016-02-28 15:47:40

标签: c#

我是C#编程的新手,我需要你的帮助。我有一个值为" 12:45:00"我想将它转换为带小数点后两位的十进制数。

2 个答案:

答案 0 :(得分:1)

虽然您实际上可以使用DateTime结构,但是,因为您的string不包含date信息,我认为最简单的方法是改为使用string.Split

string[] strs = "12:45:00".Split(':'); //will give you 12, 45, and 00
double val = Convert.ToDouble(strs[0]) + Convert.ToDouble(strs[1]) / 60 + Convert.ToDouble(strs[2]) / 3600;

然后用两个十进制值打印它,只需执行:

val.ToString("F2"); //you will get 12.75

或者,要获得12.45,请执行以下操作:

double val = Convert.ToDouble(strs[0]) + Convert.ToDouble(strs[1]) / 100; //note 100 here - second doesn't matter here

答案 1 :(得分:1)

如果您打算将小时,分钟和(可选)秒的持续时间转换为小时,则可以这样做:

double answer = TimeSpan.Parse("12:45:00", CultureInfo.InvariantCulture).TotalHours;
Console.WriteLine(answer); // Prints 12.75

这是您可以使用的值和小时费率来计算总收入。

注意:将12:45(hh:mm)转换为12.45是不正确的,因为12:45是12.75小时,而不是12.45小时。