0

我有一组以 15 分钟为间隔的时间跨度,例如:

00:00:00,

00:15:00,

00:30:00,

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

等等

4

2 回答 2

8

你想要的是一个模运算,但由于 TimeSpans 本身没有定义它,使用TotalMinutes(或另一个属性)来获取一个普通整数,然后使用模:

if ((int)t.TotalMinutes % 30 == 0)
于 2013-10-08T21:49:37.983 回答
0

您还可以每隔一个项目过滤您的数组..然后使用新数组并按顺序打印:

var newArray = MyArray.Where((t, index) => index % 2 == 0).ToArray();

这会为您提供列表中的第二个项目。

于 2013-10-08T21:50:39.127 回答