2012-10-02 104 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); 
} 

我不得不做修改的一點點,但我張貼我的代碼櫃面任何人運行到這個問題。由於它爲此代碼提供了基礎,因此我將其標記爲答案。