2013-03-31 3 views
0

Je travaille avec des intervalles de date en Java, et j'ai une date initiale (disons 04-04-2013 11:00:00), et un certain nombre d'heures (par exemple, 12:00), et certains intervalles (comme le dimanche 09:00 - 18:00, lundi 10:00 - 13:00, 14:00 - 17:00) qui peuvent être speficied par les utilisateurs, ce qui signifie que il peut y avoir autant d'intervalles qu'il le souhaite, c'est-à-dire un ou plusieurs jours.Diviser le nombre d'heures entre les intervalles et la somme

Maintenant, ce que je dois faire est de diviser ce nombre d'heures sur ces intervalles, jusqu'à ce qu'il se termine, et ainsi l'ajouter à la date initiale.

Pour des exemples:

04-04-2013, 12 heures pour diviser, et le jour suivant un intervalle de 09:00 - 18:00 (9 heures), et la suivante est 10:00 - 15h00 (5 heures) Est-ce le cas, 12 heures seront divisées sur 9 heures du jour 5, et plus de 3 heures du jour 6. Ainsi, la date finale sera 04-06-2013 13:00 (depuis le jour 6 commence à 10:00, et J'ai encore besoin de 3 heures ...)

Il ya un moyen facile de le faire? Toute bibliothèque avec ces fonctions ou quelque chose de similaire? Merci

+0

Qu'avez-vous essayé de faire? – knowbody

+0

je ne l'ai pas compris :(... – DRastislav

Répondre

0

Quelque chose comme ça ?:

Date[] intervalStart = <<specify all the starts of all the intervals>>; 
Date[] intervalEnd = <<specify all the ends of all the intervals>>; 

long totalTimeRemaining = <<hours>> * 60 * 60 *1000; //milliseconds 

for (int i=0; i<intervalStart .length; i++) { 
    long intervalLen = intervalEnd[i].getTime()- intervalStart[i].getTime(); 
    if (intervalLen > totalTimeRemaining) { 
     return new Date(intervalStart[i].getTime()+totalTimeRemaining); 
    } 
    totalTimeRemaining = totalTimeRemaining - intervalLen; 
} 

Promenade à travers les différents intervalles, calculer la longueur d'un intervalle, et le soustraire du temps total restant. Si l'intervalle est plus long que le temps restant, il suffit de calculer l'heure de fin en ajoutant la quantité restante à l'heure de début de cet intervalle.

Questions connexes