TimeSpan.Parse时间格式hhmmss

时间:2009-12-02 15:56:59

标签: c# timespan

在c#中我有时间格式hhmmss,如124510 12:45:10,我需要知道TotalSeconds。我使用了TimeSpan.Parse(“12:45:10”)。ToTalSeconds但它不采用格式hhmmss。转换它的任何好方法?

6 个答案:

答案 0 :(得分:24)

这可能会有所帮助

using System;
using System.Globalization;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime d = DateTime.ParseExact("124510", "hhmmss", CultureInfo.InvariantCulture);

            Console.WriteLine("Total Seconds: " + d.TimeOfDay.TotalSeconds);

            Console.ReadLine();
        }
    }
}

请注意,这将无法处理24小时的时间,要以24小时格式解析时间,您应使用 HHmmss 模式。

答案 1 :(得分:9)

将字符串解析为DateTime值,然后减去它的Date值以获得TimeSpan的时间:

DateTime t = DateTime.ParseExact("124510", "HHmmss", CultureInfo.InvariantCulture);
TimeSpan time = t - t.Date;

答案 2 :(得分:4)

您必须决定接收时间格式并将其转换为任何一致的格式。

然后,您可以使用以下代码:

格式:hh:mm:ss(12小时格式)

DateTime dt = DateTime.ParseExact("10:45:10", "hh:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
double totalSeconds = dt.TimeOfDay.TotalSeconds;    // Output: 38170.0

格式:HH:mm:ss(24小时格式)

DateTime dt = DateTime.ParseExact("22:45:10", "HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
double totalSeconds = dt.TimeOfDay.TotalSeconds;    // Output: 81910.0

如果格式不匹配,将抛出FormatException并显示消息:“字符串未被识别为有效的DateTime。

答案 3 :(得分:3)

你需要逃避冒号(或其他分隔符),因为它无法处理它们,我不知道。请参阅MSDN上的Custom TimeSpan Format Strings和已接受的答案,从Jon到Why does TimeSpan.ParseExact not work

答案 4 :(得分:0)

如果你能保证字符串永远是hhmmss,你可以这样做:

TimeSpan.Parse(
    timeString.SubString(0, 2) + ":" + 
    timeString.Substring(2, 2) + ":" + 
    timeString.Substring(4, 2)))

答案 5 :(得分:0)

如果您还希望以毫秒为单位使用这种格式“ 01:02:10.055”,则可以执行以下操作;

public static double ParseTheTime(string givenTime)
{
var time = DateTime.ParseExact(givenTime, "hh:mm:ss.fff", CultureInfo.InvariantCulture);
return time.TimeOfDay.TotalSeconds;
}

此代码将为您提供相应的秒数。 请注意,如果要调整精度点,可以增加'f'的数量。