C# 在C中将hh:mm:ss:fff转换为ss.fff#
我有一个类似00:00:01:347(hh:mm:ss:fff)的字符串,它以毫秒为单位表示时间。 我想把它转换成01.347(totalsecond.fff) 我尝试执行下面的代码C# 在C中将hh:mm:ss:fff转换为ss.fff#,c#,C#,我有一个类似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(ti
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;
但它在最后一行给出了例外。
如果有人能在这方面帮助我,那就太好了。您可以先使用
ParseExact
将字符串解析为DateTime
,然后使用TimeOfDay
属性获取时间跨度
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。您可以先使用
ParseExact
将字符串解析为DateTime
,然后使用TimeOfDay
属性获取时间跨度
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。您的
时间
字符串似乎也有微秒分量。你想用它们做什么?我打赌异常会告诉你你有什么问题。。。所以基本上你唯一的问题是如何解析这个字符串,因为你已经知道一旦你有了TimeSpan
,如何以s.fff格式获取它。我不想用微秒做任何事情。我已经从字符串中删除了它。异常为Sytem.OverflowException。你能写一个如何将hh:mm:ss:fff转换成ss.fff的代码吗?试着输出这个TimeSpan.Parse(time).ToString()
。结果是什么?您的时间字符串似乎也有微秒分量。你想用它们做什么?我打赌异常会告诉你你有什么问题。。。所以基本上你唯一的问题是如何解析这个字符串,因为你已经知道一旦你有了TimeSpan
,如何以s.fff格式获取它。我不想用微秒做任何事情。我已经从字符串中删除了它。异常为Sytem.OverflowException。你能写一个如何将hh:mm:ss:fff转换成ss.fff的代码吗?试着输出这个TimeSpan.Parse(time).ToString()
。结果是什么?对于记录,您最好使用TimeSpan.ParseExact
,然后使用dt.TotalSeconds
。对于记录,您最好使用TimeSpan.ParseExact
,然后使用dt.TotalSeconds
。