如何以30分钟的间隔显示TimeSpan

时间:2013-10-08 21:45:58

标签: c# timespan

我有一系列时间间隔,每隔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:0001:30:00

是否有办法让时间像通配符一样,每30分钟一次?

我想要的输出是:

  

00:00:00

     

00:30:00

     

01:00:00

     

01:30:00

2 个答案:

答案 0 :(得分:8)

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

if ((int)t.TotalMinutes % 30 == 0)

答案 1 :(得分:0)

您还可以为每个第二项过滤数组..然后使用新数组并按顺序打印:

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

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