使用c#从时间跨度中删除秒
本文关键字:删除 时间跨度 使用 | 更新日期: 2023-09-27 18:20:56
我想使用c#从时间跨度中删除秒
我的代码在这里:
TimeSpan lateaftertime = new TimeSpan();
lateaftertime = lateafter - Convert.ToDateTime(intime) ;
返回值00:10:00
但我想要下面的输出:00:10
只是不是秒字段:00
。
好吧,你可以简单地做
string.Format("{0}:{1}", ts.Hours,ts.Minutes) // it would display 2:5
编辑
要使其正确格式化,请使用
string.Format("{0:00}:{1:00}", ts.Hours,ts.Minutes) // it should display 02:05
请注意,TimeSpan
没有格式。它存储在一些内部表示中,与00:10:00
完全不同。
通常的格式hh:mm:ss
只有在TimeSpan被显式或隐式转换为String
时才会产生。因此,转换是您需要做一些事情的地方。你的问题中的代码示例是";太早了"——此时TimeSpan仍然是TimeSpan
类型。
要修改到字符串的转换,您可以使用String.Format
,如V4Vendetta的答案中所建议的,也可以使用TimeSpan.ToString(可与.NET 4一起使用)的自定义格式字符串:
string formattedTimespan = ts.ToString("hh'':mm");
请注意,这种格式字符串有以下缺点:
如果TimeSpan的跨度超过24小时,它将只显示不属于一整天的时间间隔中的整小时数。
示例:
new TimeSpan(26, 0, 0).ToString("hh'':mm")
生成02:00
。这可以通过添加d
自定义格式说明符来修复。自定义TimeSpan格式说明符不支持包含符号,因此无法区分负时间间隔和正时间间隔。
示例:
new TimeSpan(-2, 0, 0).ToString("hh'':mm")
生成02:00
。
cco TimeSpan
只是一个围绕64位整数的薄包装器,该整数包含tick的数量(10000 tick=1毫秒)。因此,00:10:00
将被存储为编号6,000,000,000
。
TimeSpan newTimeSpan = new TimeSpan(timeSpan.Hours, timeSpan.Minutes, 0);
由于时间跨度字符串表示可能超过小时和分钟,因此删除秒而不删除其他内容的最可靠代码应该是这样的:
var text = TimeSpan.FromDays(100).ToString(); // "100.00:00:00"
var index = text.LastIndexOf(':');
text = text.Substring(0, index); // "100.00:00"