我正在编写一个应用程序,用于转换C#中媒体文件的STRING持续时间。 如何使输出如下:
一个。 1:34(1分34秒)到 0点01分34秒
湾0:05(5秒)到 00:00:05
℃。 1:10:05到01:10:05
结果将显示在名为lblDuration的标签中。
我正在使用VS2008 C#。
谢谢,如果你能提供帮助。
答案 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