【发布时间】:2017-08-28 15:06:15
【问题描述】:
我有一个我传递给数据表的 sql server 表,我得到这样的东西:
ID WHAT START END
120548 TODO1 2017-03-27 00:00:00.000 2017-03-27 00:30:00.000
120549 TODO2 2017-03-27 00:00:00.000 2017-03-27 00:30:00.000
120463 TODO3 2017-03-27 14:00:00.000 2017-03-27 15:00:00.000
120557 TODO4 2017-03-27 09:30:00.000 2017-03-28 12:30:00.000
注意 Todo1 和 Todo2,它们有相同的开始和结束时间。我想增加半小时的 Todo2 和每个可能的下一个事件(仅当开始和结束时间是 00:00 - 00:30),所以我做了这个函数:
Dim dt As New DataTable()
Dim oraInizio As DateTime
Dim oraFine As DateTime
Dim minuti As Integer = 0
For Each row In dt.Rows
oraInizio = row("eventstart")
oraFine = row("eventend")
If Convert.ToDateTime(row("eventstart")).Hour = "00" And Convert.ToDateTime(row("eventstart")).Minute = "00" Then
oraInizio = oraInizio.AddMinutes(minuti)
oraFine = oraFine.AddMinutes(minuti)
row("eventstart") = oraInizio
row("eventend") = oraFine
minuti = minuti + 30
End If
Next
da.Fill(dt)
所以这是我希望的结果:
ID WHAT START END
120548 TODO1 2017-03-27 00:00:00.000 2017-03-27 00:30:00.000
120549 TODO2 2017-03-27 00:30:00.000 2017-03-27 01:00:00.000
120463 TODO3 2017-03-27 14:00:00.000 2017-03-27 15:00:00.000
120557 TODO4 2017-03-27 09:30:00.000 2017-03-28 12:30:00.000
请注意,如果在 00:00-00:30 有另一个事件,例如 Todo5,它应该变为 01:00-01:30。该功能不起作用,在VS2015中我得到“无法设置断点错误”,所以我问你我做错了什么。谢谢。
【问题讨论】:
-
你需要能够用断点调试你的代码,看这里解决这个问题,然后你可以正确地找到你真正问题的答案。 stackoverflow.com/questions/31644074/…
-
你现在得到了什么结果?您的代码中似乎有些地方不对劲。
-
@codeMonger123 现在我在 00:00-00:030 收到所有事件,我可以想到 IF 条件的一些问题。当涉及数据时间时,也许我不能针对“00”做这件事?
-
对不起,伙计们,我没有意识到我在循环之后填充了 dt,所以我只是将 da.Fill(dt) 部分移到了 For 之前,现在它可以按预期工作了。
标签: asp.net sql-server vb.net datetime datatable