我有10行,包含2列InTime
和OutTime
。上一个条目的OutTime
是下一个条目的InTime
和下一个条目的OutTime
应比之前OutTime
条目多30分钟。我正在尝试以下代码:
TimeSpan InTime = TimeSpan.Parse("08:00");
TimeSpan t2 = TimeSpan.Parse("00:30:00");
TimeSpan OutTime = InTime.Add(t2);
有没有办法在C#中使用for循环来实现这个目的?
答案 0 :(得分:2)
你应该发布一个你希望表格看起来像什么的例子......还有一些背景,你要做的事情会有很长的路要走。但是,我猜你想要一个看起来像这样的表:
InTime | OutTime
-------|--------
8:00 | 8:30
8:30 | 9:00
9:00 | 9:30
9:30 | 10:00
10:00 | 10:30
10:30 | 11:00
etc. | etc.
如果是这种情况,那么你可以做一个非常简单的for
循环:
List<MyClass> rows = new List<MyClass>();
// Change the 10 in the following line to increase the number of rows.
for(double i = 0; i < 10; i++)
{
TimeSpan inTime = TimeSpan.FromHours(8 + i / 2);
TimeSpan outTime = TimeSpan.FromHours(8 + (i + 1) / 2);
rows.Add(new MyClass(inTime, outTime));
}
答案 1 :(得分:1)
试试这段代码。您可以设置开始时间,差异和条目数,它将为您生成它们。第二个循环仅用于测试,因此您可以在完成短信后删除它。这些条目保存在字典中。
TimeSpan StartTime = TimeSpan.FromHours(8);
int Difference = 30; //In minutes.
int EntriesCount = 10;
Dictionary<TimeSpan, TimeSpan> Entries = new Dictionary<TimeSpan, TimeSpan>();
for(int i = 0; i < EntriesCount; i++){
Entries.Add(StartTime.Add(TimeSpan.FromMinutes(Difference * i)),
StartTime.Add(TimeSpan.FromMinutes(Difference * i + Difference)));
}
foreach(var e in Entries){
Console.WriteLine("In: " + e.Key + " - Out: " + e.Value);
}
这是fiddle
答案 2 :(得分:1)
以下代码根据Racil Hilan发布的评论为我工作
TimeSpan StartTime = TimeSpan.FromHours(5);
int Difference = 15;
int EntriesCount = count;
Dictionary<TimeSpan, TimeSpan> Entries = new Dictionary<TimeSpan, TimeSpan>();
for (int TableRowId = 0; TableRowId <= count - 1; TableRowId++)
{
string inTime = "//*[@id='INTIME" + TableRowId + "']";
string outTime = "//*[@id='OUTTIME" + ableRowId + "']";
test.Type(inTime, StartTime.Add(TimeSpan.FromMinutes(Difference * TableRowId)).ToString("hh\\:mm"));
test.Type(outTime, StartTime.Add(TimeSpan.FromMinutes(Difference * TableRowId + Difference)).ToString("hh\\:mm"));
}