【发布时间】:2018-06-22 06:03:16
【问题描述】:
我正在开发一个股票市场软件。我每 5 分钟 有一支蜡烛。 So whenever a time-frame of say 30 minutes is selected, what we do is -
long val = (long)(D * 24 * 60) / 30; //D is datetime of candle converted in OA date in double.
//The above code never create problem as (24*60)%30 == 0.
上面的行每半小时为块 i 返回相同的值。 e.蜡烛 10:35, 10:40.....11:00。有了它,我们可以很容易地找出半小时的时间块,无论何时 val 被更改。
现在,我们有一个挑战以同样的方式实现 75-Mins 的块。我们的市场从 9:15 开始,到 3:30 结束。假设需要计算 75-Mins 的日期是 22-9-2018. 为此我需要正好有 5 根低于时间的蜡烛 -
- 22-9-2018 10:30(9:15 到 10:30 = 75 分钟)
- 22-9-2018 11:45
- 22-9-2018 1:00
- 22-9-2018 2:15
- 22-9-2018 3:30
我需要与上面提到的相同类型的代码,它将为这五个块计算相同的值。
我发现的问题是,如果我们从 12:00 开始 75,那么市场时间的块将在 8:45 到 10:00 而我们要求从 9:15到 10:30 第一块。
另外,(24*60)%75 = 15,所以15分钟每天的差异也会影响第二天的计算。
更新 -
为了澄清这个问题,对于 10:35 到 11:45 的一段,我将有 10:35、10:40、10:45 ...... 11:45 这样的蜡烛。对于所有这些日期时间,我需要一个相同的数字返回值。 11:50 的蜡烛一来,返回的数值就会改变,我的新 75 分钟块将开始。它会在 1:00 之前给出相同的值。
【问题讨论】:
-
您可以为特定的日期和时间声明
DateTime,并在while循环中使用与日期相关的函数DateTime.AddMinutes和DateTime.ToOADate。 -
@bradbury9 无法清楚地理解您。你能解释一下吗?
-
检查 Reza 的答案,这是我的建议,使用 linq 代替
while循环