c#中的时差,3位数格式的分钟
本文关键字:格式 3位 分钟 时差 | 更新日期: 2023-09-27 18:19:17
我在计算两个时间戳之间的差异时遇到问题,当分钟用3位数表示时,例如180:22 = 180分22秒。
那么,你能告诉我如何获得时间戳之间的差异吗?
180:22和122:11
或
232:21和31:34
等。
UPDATE:我需要得到两个时间之间的差异,定义为字符串。造成问题的是,这些字符串(时间)中的分钟数大于60,并且超出了限制。所以我需要知道如何找到像上面的例子(180:22和122:11,和232:21和31:34)的差异
使用系统。时间间隔结构:
var seconds=(new TimeSpan(0, 180, 22)-new TimeSpan(0, 122, 11)).TotalSeconds;
var minutes=(new TimeSpan(0, 232, 21)-new TimeSpan(0, 31, 34)).TotalMinutes;
这里有一个类来做这些事情:
public class CrazyTime
{
public TimeSpan TimeSpanRepresentation { get; set; }
public CrazyTime(TimeSpan timeSpan)
{
this.TimeSpanRepresentation = timeSpan;
}
public CrazyTime(string crazyTime)
{
// No error checking. Add if so desired
var pieces = crazyTime.Split(new[] { ':' });
var minutes = int.Parse(pieces[0]);
var seconds = int.Parse(pieces[1]);
TimeSpanRepresentation = new TimeSpan(0, minutes, seconds);
}
public static CrazyTime operator-(CrazyTime left, CrazyTime right)
{
var newValue = left.TimeSpanRepresentation - right.TimeSpanRepresentation;
return new CrazyTime(newValue);
}
public override string ToString()
{
// How should negative Values look?
return ((int)Math.Floor(TimeSpanRepresentation.TotalMinutes)).ToString() + ":" + TimeSpanRepresentation.Seconds.ToString();
}
}
下面是它的用法:
var a = new CrazyTime("123:22");
var b = new CrazyTime("222:11");
var c = b - a;
Console.WriteLine(c);
这行得通:
string time1 = "180:22";
string time2 = "122:11";
TimeSpan span1 = getTimespan(time1);
TimeSpan span2 = getTimespan(time2);
TimeSpan diff = span1 - span2;
getTimespan只需要正确解析字符串。我决定用Regex来做这件事,但是你可以走任何路线,特别是当分隔符":"永远不会改变的时候。
private static TimeSpan getTimespan(string time1)
{
Regex reg = new Regex(@"'d+");
MatchCollection matches = reg.Matches(time1);
if (matches.Count == 2)
{
int minutes = int.Parse(matches[0].Value);
int seconds = int.Parse(matches[1].Value);
return new TimeSpan(0, minutes, seconds);
}
return TimeSpan.Zero;
}