我有一系列时间间隔,每隔15分钟,例如:
00:00:00,
○点15分00秒,
00:30:00,
○时45分00秒,
01:00:00
等
我想循环播放并仅显示30分钟间隔的那些。我已经尝试使用.compare
,但这并不能完全满足我的需要。
例如:
var interval = TimeSpan.FromMinutes(30);
foreach(var t in MyArray)
{
if(TimeSpan.Compare(inteval, t.Time) == 0)
Do something
}
}
这在技术上有效,但只匹配00:30:00
。我可以将间隔添加到循环中并使用类似:
var interval = new TimeSpan(t.Hour, 30, 0)
但只有00:30:00
,01:30:00
。
是否有办法让时间像通配符一样,每30分钟一次?
我想要的输出是:
00:00:00
00:30:00
01:00:00
01:30:00
等
答案 0 :(得分:8)
你想要的是模运算,但由于TimeSpans本身没有定义它,使用TotalMinutes
(或其他属性)来获得一个普通整数然后使用modulo:
if ((int)t.TotalMinutes % 30 == 0)
答案 1 :(得分:0)
您还可以为每个第二项过滤数组..然后使用新数组并按顺序打印:
var newArray = MyArray.Where((t, index) => index % 2 == 0).ToArray();
这会为您提供列表中的每个第二项。