【问题标题】:Recursivly add minutes to datetime value in DataTable递归地将分钟添加到 DataTable 中的日期时间值
【发布时间】: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


【解决方案1】:

对不起,我没有意识到我在循环之后填充了 dt,所以我只是将 da.Fill(dt) 部分移到了 For 之前,现在它可以按预期工作了。

【讨论】:

  • 这就是为什么我问你得到的结果。解决方法
猜你喜欢
  • 2017-06-21
  • 1970-01-01
  • 2016-02-19
  • 2011-12-31
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
相关资源
最近更新 更多