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

本文关键字:时间 转换 十进制 格式 字符串 | 更新日期: 2023-09-27 18:36:33

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

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

虽然您实际上可以为自己的情况使用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

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

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 小时。