我可以通过每次添加30分钟来使用for循环,同时将时间添加到不同的行

本文关键字:添加 时间 for 可以通过 30分钟 循环 | 更新日期: 2023-09-27 18:19:41

我有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循环来实现这一点?

我可以通过每次添加30分钟来使用for循环,同时将时间添加到不同的行

您应该发布一个您期望的表外观的示例。。。此外,你想做的事情背后的一点背景也会有很大的帮助。然而,我猜你想要一张看起来像这样的桌子:

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));
}

试试这个代码。您可以设置开始时间、差异和条目数量,它会为您生成它们。第二个循环只是为了测试,所以你可以在发完短信后删除它。词条保存在词典中。

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);
}

这是一个小提琴

根据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"));
}