我有一个类似00:00:01:347(hh:mm:ss:fff)的字符串,它以毫秒为单位表示时间。我想将它转换为01.347(totalsecond.fff)。
我尝试了下面的代码来执行
string time = "00:00:01:347:789";
int index = time.LastIndexOf(":");
if (index > 0)
time = time.Substring(0, index);
double seconds = TimeSpan.Parse(time).TotalSeconds;
但它在最后一行给出了异常。如果有人能在这方面帮我那就太好了。
发布于 2018-08-15 02:31:13
您可以首先使用ParseExact
将字符串解析为DateTime
,然后使用TimeOfDay
属性获取timespan。
static void Main(string[] args)
{
string time = "00:00:01:347"; // I removed the microsecond for brevity
DateTime dt = DateTime.ParseExact(time, "hh:mm:ss:fff", CultureInfo.InvariantCulture);
Console.WriteLine(dt.TimeOfDay.TotalSeconds); // 01.347(totalsecond.fff)
Console.ReadLine();
}
编辑:正如@Andrew所说,这里有另一个解决方案。
TimeSpan ts = TimeSpan.ParseExact(time, "hh\\:mm\\:ss\\:fff", CultureInfo.InvariantCulture);
Console.WriteLine(ts.TotalSeconds); // 01.347
请注意,您必须转义分隔符以避免获取FormatException。
https://stackoverflow.com/questions/51852092
复制相似问题