转换时间从0:00或00:00到00:00:00

时间:2011-09-13 09:45:28

标签: c# time format duration

我正在编写一个应用程序,用于转换C#中媒体文件的STRING持续时间。 如何使输出如下:

一个。 1:34(1分34秒)到 0点01分34秒

湾0:05(5秒)到 00:00:05

℃。 1:10:05到01:10:05

结果将显示在名为lblDuration的标签中。

我正在使用VS2008 C#。

谢谢,如果你能提供帮助。

6 个答案:

答案 0 :(得分:5)

我会将其解析为TimeSpan,然后使用

重新格式化
string text = timeSpan.ToString("hh':'mm':'ss");

假设您正在使用.NET 4并支持custom TimeSpan formats。在.NET 4之前,你必须自己编写 - 不是太难,而是比上面更难。

解析开始的时间跨度是另一回事 - 例如,您可以使用TimeSpan.TryParseExact传递多种格式。

解析然后重新格式化的好处是,您将验证您的日期是否合理 - 例如不是“99:99”。

答案 1 :(得分:0)

用冒号(':')拆分字符串,将每个元素转换为数字并使用%02d打印每个数字,在第1和第2以及第2和第3之间加上':'

答案 2 :(得分:0)

如何将其解析为DateTime对象,然后将其格式化为例如

DateTime.ParseExact("1:32", 'H:mm', CultureInfo.InvariantCulture).ToString("HH:mm:ss");

上述解决方案 - 上述解决方案是针对4之前的.NET版本的解决方法,您无法访问自定义TimeSpan格式。如果您使用的是.NET 4,那么我肯定会建议使用TimeSpan作为@Jon建议的

答案 3 :(得分:0)

public void convertString()

    {

        string str;

        str = "your time";

        int length = str.Length;

        if (length == 4)

        {

            str = "00" + ":" +"0"+ str;

       }

        if (length == 5)

       {
            str = "00" + ":" + str;

        }

}

    static void Main(string[] args)

    {

        Program p = new Program();

        p.convertString();

    }

答案 4 :(得分:0)

    private static string GetLable(string text)
    {
        if (string.IsNullOrEmpty(text))
            return "00:00:00";
        var builder = new StringBuilder();
        var arr = text.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
        if (arr.Length == 2)
            builder.Append("00:");
        var i = 0;
        foreach (var t in arr)
        {
            builder.Append(t.Length == 1 ? "0" + t : t);
            if (arr.Length - 1 != i++)
                builder.Append(":");
        }
        return builder.ToString();
    }

答案 5 :(得分:0)

我认为这里最好的事情是使用TimeSpan.TryParse,但我们必须要小心 - 如果该方法看到只有一个:的输入字符串,它会将其解析为{{1 }}!

hours:minutes变得繁琐,因为没有一种格式接受前导零和没有前导零。)

所以:

TryParseExact