将持续时间从0:00或00:00转换为00:00:00

本文关键字:转换 持续时间 | 更新日期: 2023-09-27 18:08:31

我正在开发一个应用程序,该应用程序可以转换C#中媒体文件的STRING持续时间。我如何使其输出如下:

a。1:34(1分34秒(至凌晨00:01:34

b。0:05(5秒(至00:00:05

c。1:10:05至01:10:05

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

我使用的是VS2008 C#。

如果你能帮忙的话,谢谢。

将持续时间从0:00或00:00转换为00:00:00

我会将其解析为TimeSpan,然后使用重新格式化

string text = timeSpan.ToString("hh':'mm':'ss");

这是假设您正在使用。NET 4及其对自定义CCD_ 2格式的支持。之前NET 4,你必须自己写——不太难,但比上面更难。

首先分析时间跨度是另一回事——例如,可以使用多种格式的TimeSpan.TryParseExact传递。

解析然后重新格式化的好处是,您可以验证您是否有合理的日期——例如,不是"99:99"。

用冒号(":"(拆分字符串,将每个元素转换为数字,并使用%02d打印每个数字,在第一个和第二个以及第二个和第三个之间放置一个":">

我认为这里最好的做法是使用TimeSpan.TryParse,但我们必须小心——如果该方法看到一个只有一个:的输入字符串,它会将其解析为hours:minutes

(TryParseExact变得很麻烦,因为没有一种格式同时接受前导零和前导零的缺失(。

因此:

var input = "5:06";
TimeSpan ts;
var parseSuccessful = TimeSpan.TryParse(input, out ts);
if  (parseSuccessful)
{
    if (input.Count(c => c == ':') == 1)
    {
        // TryParse parsed this as hh:mm but we want it to mean mm:ss
        // so scale appropriately
        ts = new TimeSpan(ts.Ticks / 60);
    }
    Console.WriteLine(ts.ToString(@"hh':mm':ss"));
}

如何将其解析为DateTime对象,然后以这种方式格式化(例如(

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

只是澄清一下-上述解决方案是一个变通方案。NET版本4之前,您无法访问自定义TimeSpan格式。如果您正在使用。NET 4,那么我肯定会建议使用TimeSpan,因为@Jon建议使用

    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();
    }
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();
    }