2015-12-22 73 views
0

我想显示与实际时间不同的时钟时间。显示操作时间而不是实际时间

的时序图是这样的

| Actual Time | Manipulated Time | 
------------------------------------- 
8:54   |   8:54 
8:55   |   8:55 
8:56   |   8:55 
8:57   |   8:55 
8:58   |   8:56 
8:59   |   8:56 
9:00   |   8:56 
9:01   |   8:57 
9:02   |   8:57 
9:03   |   8:57 
9:04   |   8:58 
9:05   |   8:58 
9:06   |   8:58 
9:07   |   8:59 
9:08   |   8:59 
9:09   |   8:59 
9:10   |   9:00 
9:11   |   9:00 
9:12   |   9:01 
9:13   |   9:01 
9:14   |   9:02 
9:15   |   9:02 
9:16   |   9:03 
9:17   |   9:03 
9:18   |   9:04 
9:19   |   9:04 
9:20   |   9:05 
9:21   |   9:06 
9:22   |   9:07 
9:23   |   9:08 
9:24   |   9:09 
9:25   |   9:10 
9:26   |   9:11 
9:27   |   9:12 
9:28   |   9:13 
9:29   |   9:14 
9:30   |   9:15 
9:31   |   9:17 
9:32   |   9:19 
9:33   |   9:21 
9:34   |   9:23 
9:35   |   9:25 
9:36   |   9:27 
9:37   |   9:29 
9:38   |   9:31 
9:39   |   9:33 
9:40   |   9:35 
9:41   |   9:37 
9:42   |   9:39 
9:43   |   9:41 
9:44   |   9:43 
9:45   |   9:45 
9:46   |   9:46 
9:47   |   9:47 
9:48   |   9:48 
9:49   |   9:49 

所以这是时钟的外观......到时候我想表明操纵时间的实际时间。制作我得到的表格的数组/列表/字典并显示操纵的时间。这将是最后的选择。

我想找到任何可以轻松完成此任务的逻辑/循环。有没有人看到任何可以在循环中实现的模式。

A 变化的一点点是可能的,但图表/图表应该看起来像这样。

Chart of the Timings

+0

我会用事实操纵时间的形状像抛物线或指数的一部分。 – jsanalytics

回答

1

这的确是一项艰巨的任务,人..它涉及多个参数找到它的模式。

我可以想出最好是使至少一步一步制剂像这样(在该函数的输入是ibreakerdivisor,和interval,输出为j):

int i_copy = i, acc_val = 0, leap = divisor * interval; 
while (i_copy > leap && divisor > 1) { 
    i_copy -= leap; 
    acc_val += interval; 
    divisor--; 
    leap = divisor * interval;    
} 
int j = i_copy/divisor + acc_val + Math.Max(i - breaker, 0); 

这是用于我的测试较完整的代码:

void formula(int i, int breaker = 35, int divisor = 3, int interval = 5) { 
    DateTime original = new DateTime(2015, 12, 22, 5, 8, 55); 
    DateTime convert = new DateTime(2015, 12, 22, 5, 8, 55); 

    int i_copy = i, acc_val = 0, leap = divisor * interval; 
    while (i_copy > leap && divisor > 1) { 
     i_copy -= leap; 
     acc_val += interval; 
     divisor--; 
     leap = divisor * interval;    
    } 
    int j = i_copy/divisor + acc_val + Math.Max(i - breaker, 0);   

    original = original.AddSeconds(i); 
    convert = convert.AddSeconds(j); 

    //Do the printing here... 
} 

我这样称呼它,

for (int i = 0; i <= 50; ++i) 
    formula(i); 

这是使用代码的结果:

[2015-12-22 07:58:43.324 UTC] 8:55 8:55 i: 0 divisor: 3 acc_val: 0 j: 0 
[2015-12-22 07:58:43.326 UTC] 8:56 8:55 i: 1 divisor: 3 acc_val: 0 j: 0 
[2015-12-22 07:58:43.326 UTC] 8:57 8:55 i: 2 divisor: 3 acc_val: 0 j: 0 
[2015-12-22 07:58:43.327 UTC] 8:58 8:56 i: 3 divisor: 3 acc_val: 0 j: 1 
[2015-12-22 07:58:43.327 UTC] 8:59 8:56 i: 4 divisor: 3 acc_val: 0 j: 1 
[2015-12-22 07:58:43.327 UTC] 9:00 8:56 i: 5 divisor: 3 acc_val: 0 j: 1 
[2015-12-22 07:58:43.327 UTC] 9:01 8:57 i: 6 divisor: 3 acc_val: 0 j: 2 
[2015-12-22 07:58:43.328 UTC] 9:02 8:57 i: 7 divisor: 3 acc_val: 0 j: 2 
[2015-12-22 07:58:43.328 UTC] 9:03 8:57 i: 8 divisor: 3 acc_val: 0 j: 2 
[2015-12-22 07:58:43.328 UTC] 9:04 8:58 i: 9 divisor: 3 acc_val: 0 j: 3 
[2015-12-22 07:58:43.328 UTC] 9:05 8:58 i: 10 divisor: 3 acc_val: 0 j: 3 
[2015-12-22 07:58:43.328 UTC] 9:06 8:58 i: 11 divisor: 3 acc_val: 0 j: 3 
[2015-12-22 07:58:43.329 UTC] 9:07 8:59 i: 12 divisor: 3 acc_val: 0 j: 4 
[2015-12-22 07:58:43.329 UTC] 9:08 8:59 i: 13 divisor: 3 acc_val: 0 j: 4 
[2015-12-22 07:58:43.330 UTC] 9:09 8:59 i: 14 divisor: 3 acc_val: 0 j: 4 
[2015-12-22 07:58:43.330 UTC] 9:10 9:00 i: 15 divisor: 3 acc_val: 0 j: 5 
[2015-12-22 07:58:43.330 UTC] 9:11 9:00 i: 16 divisor: 2 acc_val: 5 j: 5 
[2015-12-22 07:58:43.330 UTC] 9:12 9:01 i: 17 divisor: 2 acc_val: 5 j: 6 
[2015-12-22 07:58:43.330 UTC] 9:13 9:01 i: 18 divisor: 2 acc_val: 5 j: 6 
[2015-12-22 07:58:43.331 UTC] 9:14 9:02 i: 19 divisor: 2 acc_val: 5 j: 7 
[2015-12-22 07:58:43.331 UTC] 9:15 9:02 i: 20 divisor: 2 acc_val: 5 j: 7 
[2015-12-22 07:58:43.331 UTC] 9:16 9:03 i: 21 divisor: 2 acc_val: 5 j: 8 
[2015-12-22 07:58:43.331 UTC] 9:17 9:03 i: 22 divisor: 2 acc_val: 5 j: 8 
[2015-12-22 07:58:43.331 UTC] 9:18 9:04 i: 23 divisor: 2 acc_val: 5 j: 9 
[2015-12-22 07:58:43.332 UTC] 9:19 9:04 i: 24 divisor: 2 acc_val: 5 j: 9 
[2015-12-22 07:58:43.332 UTC] 9:20 9:05 i: 25 divisor: 2 acc_val: 5 j: 10 
[2015-12-22 07:58:43.332 UTC] 9:21 9:06 i: 26 divisor: 1 acc_val: 10 j: 11 
[2015-12-22 07:58:43.332 UTC] 9:22 9:07 i: 27 divisor: 1 acc_val: 10 j: 12 
[2015-12-22 07:58:43.333 UTC] 9:23 9:08 i: 28 divisor: 1 acc_val: 10 j: 13 
[2015-12-22 07:58:43.333 UTC] 9:24 9:09 i: 29 divisor: 1 acc_val: 10 j: 14 
[2015-12-22 07:58:43.333 UTC] 9:25 9:10 i: 30 divisor: 1 acc_val: 10 j: 15 
[2015-12-22 07:58:43.333 UTC] 9:26 9:11 i: 31 divisor: 1 acc_val: 10 j: 16 
[2015-12-22 07:58:43.334 UTC] 9:27 9:12 i: 32 divisor: 1 acc_val: 10 j: 17 
[2015-12-22 07:58:43.334 UTC] 9:28 9:13 i: 33 divisor: 1 acc_val: 10 j: 18 
[2015-12-22 07:58:43.334 UTC] 9:29 9:14 i: 34 divisor: 1 acc_val: 10 j: 19 
[2015-12-22 07:58:43.334 UTC] 9:30 9:15 i: 35 divisor: 1 acc_val: 10 j: 20 
[2015-12-22 07:58:43.334 UTC] 9:31 9:17 i: 36 divisor: 1 acc_val: 10 j: 22 
[2015-12-22 07:58:43.340 UTC] 9:32 9:19 i: 37 divisor: 1 acc_val: 10 j: 24 
[2015-12-22 07:58:43.342 UTC] 9:33 9:21 i: 38 divisor: 1 acc_val: 10 j: 26 
[2015-12-22 07:58:43.343 UTC] 9:34 9:23 i: 39 divisor: 1 acc_val: 10 j: 28 
[2015-12-22 07:58:43.344 UTC] 9:35 9:25 i: 40 divisor: 1 acc_val: 10 j: 30 
[2015-12-22 07:58:43.344 UTC] 9:36 9:27 i: 41 divisor: 1 acc_val: 10 j: 32 
[2015-12-22 07:58:43.345 UTC] 9:37 9:29 i: 42 divisor: 1 acc_val: 10 j: 34 
[2015-12-22 07:58:43.345 UTC] 9:38 9:31 i: 43 divisor: 1 acc_val: 10 j: 36 
[2015-12-22 07:58:43.346 UTC] 9:39 9:33 i: 44 divisor: 1 acc_val: 10 j: 38 
[2015-12-22 07:58:43.346 UTC] 9:40 9:35 i: 45 divisor: 1 acc_val: 10 j: 40 
[2015-12-22 07:58:43.347 UTC] 9:41 9:37 i: 46 divisor: 1 acc_val: 10 j: 42 
[2015-12-22 07:58:43.348 UTC] 9:42 9:39 i: 47 divisor: 1 acc_val: 10 j: 44 
[2015-12-22 07:58:43.351 UTC] 9:43 9:41 i: 48 divisor: 1 acc_val: 10 j: 46 
[2015-12-22 07:58:43.351 UTC] 9:44 9:43 i: 49 divisor: 1 acc_val: 10 j: 48 
[2015-12-22 07:58:43.352 UTC] 9:45 9:45 i: 50 divisor: 1 acc_val: 10 j: 50 
+0

心灵吹@ian :)即将实现并标记为答案,如果它的工作 –

+0

是的,请参阅...有些参数如divisor,间隔等必须根据您的需要调整。我放在那里只是你的例子(除数= 3,区间= 5) – Ian

+0

代码简化。我只是意识到有些东西可以被删除。 – Ian

相关问题