C# 在C中将hh:mm:ss:fff转换为ss.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

我有一个类似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;
但它在最后一行给出了例外。
如果有人能在这方面帮助我,那就太好了。

您可以先使用
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