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);
}
}
卡請建議。謝謝
我會使用時間(因爲時間是唯一的)和該時間段的計數器。你可以將它們結合起來給你一個獨特的ID。 –
對不起,我不明白。請你能解釋爲代碼。 – Kumar
這個隨機分佈的目的是什麼,因爲它不清楚你想要解決什麼現實世界的問題。 –