2012-10-02 71 views
0

我正在处理将显示时间的自定义UIPickerView。我需要他们来匹配下面显示的网站。算法自定义DatePicker

时间将从x开始,但现在是午夜(可以是任何时间)。然后它将增加i的间隔。下图i = 7

我遇到的是当我更改小时,例如上午01时问题,分钟需要改变,以及使用户只能挑了这一个小时一分钟,这是在i增量,但我不确定运行正确的算法。

现在我使用60 % i == 0然后使用UIDatePicker和设置minuteIntervali,但如果60 % i != 0这正是我需要使用这个客户选择器。

谁能帮我用一种算法,将提供我行的小时分钟和以及填充基于区间小时和分钟数?

enter image description here

回答

1

我不能告诉你的Objective-C,iOS或uipickerview ...对于算法什么。这里是特别没有语言的一些伪代码:

i = 7  // this is i in your example 
offset=420 // This is where you could say you want 
      // to start at 7:00 (420 minutes after midnight) 
      // you could use any number here obviously. 
counter = offset 
while (counter<1440+offset){ 
    counter = counter+i 
    minutes = counter%60 
    hours = counter/60 // Use integer division 
} 

的模二向你分给你,其余每一次。所以在你的榜样分钟将从56去=> 63 => 3,其你想要什么。

,如果你只是想知道分钟和小时会是怎样一个给定的时间间隔(假设间隔去从0到206(有一天206个7分钟间隔),那么你会做以下几点:

minutes = (i*intervalNum) % 60 
hours = (i*intervalNum)/60 // Integer division! 

如果你需要在一个时间间隔的号码,你可以做到以下几点:

keep a hashmap (again I don't know how objective-c handles these) that maps an hour to a list of the minutes that mark intervals. In your example you could have a hashmap that looks like: 

{0 => (0,7,14,21,28,35,42,49,56), 
1 => (3,10,17,24,31,38,45,52,59), 
2 => (6,13,20,27,34,41,48,55), 
... 
} 

第一轮通过过程中,您将建立这个地图获得2-间隔数。 3时隙只是返回地图[2] .length(或任何其等价物)。

很明显,这是许多方法之一,并需要更多的上下文来进一步细节。

好运

+0

这确实让我指出了正确的方向。但有一点是,如何获得特定时间段的分钟数?在我的屏幕截图中,他们都有8-7分钟的间隔,除了最后一个间隔为7-7分钟。 – Bot

+0

看我上面的编辑。 – ajon

0

感谢阿容我想出了这个代码

NSInteger counter = startTime; 
while (counter + minuteInterval < endTime) { 
    counter = counter + minuteInterval; 
    NSLog(@"Hours: %d Minutes: %d", counter/60, counter % 60); 
} 

我不得不做修改的一点点,但我张贴我的代码柜面任何人运行到这个问题。由于它为此代码提供了基础,因此我将其标记为答案。