我可以使用for循环,每次添加30分钟,同时为不同的行添加时间

时间:2015-10-27 20:47:38

标签: c#

我有10行,包含2列InTimeOutTime。上一个条目的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循环来实现这个目的?

3 个答案:

答案 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"));
}