이것은 이해할 수있는 프로그래밍 질문입니다. 문맥은 다음과 같습니다 -시간 프레임 내에 최대 2 개의 ID를 할당하는 방법 jodatime
즉 11:00부터 13:00까지의 시간대가 있습니다. 다음 며칠 동안 배포되지만 지정된 시간대 사이에만 배포 할 ID 목록이 있습니다.
난수 생성을 위해 난수 생성기를 사용하고 있습니다. 날짜 시간 계산을 위해 JodaTime API를 사용하고 있습니다.
예 : 오늘부터 나는 며칠 후에 이드를 배포해야했습니다. 첫 번째 랜덤 생성 된 첫 번째 ID는 99입니다. 따라서 첫 번째 ID에 할당 된 시간은 2014 년 1 월 16 일 (11 : 00 + 99 분) = 12:39 분입니다. 이제는 임의의 숫자로 110을 생성한다고 가정합니다. 지금 (12 : 39+ 110)> 같은 날 13시 이상. 그래서 그것은 11:00 시부 터 다음날 시간을 할당해야합니다. 따라서 우리는 며칠 후에 모든 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
당신이 해결하려고하는 현실 세계의 문제가 명확하지 않으므로이 무작위 배포의 목적은 무엇입니까? –