2014-01-16 53 views
0

這是一個編程問題,因爲我能理解。上下文低於 -如何在一個時間範圍內分配兩個ID的最大值jodatime

有TimeWindow即從11:00到13:00小時。 我有一個ID列表,可在接下來的幾天內發佈,但僅限於指定的時間範圍內。

我使用隨機數發生器獲取隨機數。我使用JodaTime Api進行日期時間計算。

至於前。從今天起,我不得不在未來幾天內分發這些ID。 第一個隨機生成的是99.所以分配給第一個Id的時間是2014年1月16日,(11:00 + 99分鐘)= 12:39分鐘。 現在假設它會生成110作爲隨機數。現在(12:39+ 110)>大於同一天的13:00小時。所以應該從下午11點開始分配第二天的時間。因此,我們在接下來的幾天內將所有的ID分配到列表中。

我在這裏

int[] startHour= {11, 0}; 
     int[] endtHour= {13, 0}; 
     DateTimeZone dtZoneforUser = DateTimeZone.forID("America/New_York"); 
     DateTime dtNow = DateTime.now(dtZoneforUser); 

     DateTime dtTimeWindowStart = new DateTime(dtNow.getYear(),dtNow.getMonthOfYear(),dtNow.dayOfMonth().get(),startHour[0],startHour[1],dtZoneforUser); 
     DateTime dtTimeWindowEnd = new DateTime(dtNow.getYear(),dtNow.getMonthOfYear(),dtNow.dayOfMonth().get(),endtHour[0],endtHour[1],dtZoneforUser); 

     List<String> lstAudio = new ArrayList<String>(); 
     lstAudio.add("1"); 
     lstAudio.add("2"); 
     lstAudio.add("3"); 
     lstAudio.add("4"); 

     DateTime recurringStartingTime = dtTimeWindowStart; 
     DateTime recurringEndTime = dtTimeWindowEnd; 
     List<String> timeToPlay = new ArrayList<String>(); 
     int daysCounter = 0; 
     for (String audioVal : lstAudio) { 
      int randomNum = DateTimeFormatTestIntellix.getRandom(); 

      DateTime tempTime = recurringStartingTime.plusMinutes(randomNum); 
      recurringStartingTime = tempTime; 

      System.out.println(randomNum); 

      if (tempTime.isBefore(recurringEndTime)) 
       { 
        System.out.println("Audio Id is "+audioVal + " and the play time is "+tempTime); 
       } 

     } 

卡請建議。謝謝

+0

我會使用時間(因爲時間是唯一的)和該時間段的計數器。你可以將它們結合起來給你一個獨特的ID。 –

+0

對不起,我不明白。請你能解釋爲代碼。 – Kumar

+0

這個隨機分佈的目的是什麼,因爲它不清楚你想要解決什麼現實世界的問題。 –

回答

0

最簡單的解決方案是將時間分成兩小時和幾天的時間。

​​
相關問題