0

我有以下代码,

现在的问题是执行此操作的最佳方法是什么:

还要注意“minAdd”可以超过 60,这意味着 90min add(一个半小时等)

谢谢,

        int minAdd = Convert.ToInt16(txtMinAdd.text);
        DateTime now = DateTime.Now;
        DateTime nextEvent = DateTime.Now.AddMinutes(minAdd);
        TimeSpan diff = now - nextEvent;
        if (diff > minAdd) -------------- PROBLEM HERE
        {
            //act here
        }
4

2 回答 2

4

编辑:正如 Reed 所指出的,您显示的代码毫无意义。我假设您实际上想nextEvent从其他地方获得。

我怀疑你只是想要:

if (diff.TotalMinutes > minAdd)
{
}

或者你可以使用:

TimeSpan minTimeSpan = TimeSpan.FromMinutes(Convert.ToInt16(txtMinAdd.text));
...
if (diff > minTimeSpan)
{
}
于 2013-05-21T16:56:06.933 回答
1

由于diffis based on nextEvent,它完全基于minAdd,因此没有理由进行此检查 - 它永远不会是真的。

此外,在您的代码中,diff如果是正数,则始终为负数minAdd,因为您nextEventDateTime.Now.

如果您尝试将事件安排在某个时间点发生,您可能需要考虑使用Timer, 并根据事件时间安排计时器在某个时间点发生:

DateTime nextEvent = DateTime.Now.AddMinutes(minAdd);
TimeSpan diff = nextEvent - DateTime.Now;

// Schedule a timer to occur here
someTimer.Interval = diff.TotalMilliseconds; // Timer intervals are typically in ms
于 2013-05-21T16:56:44.017 回答