L'ajout d'un nombre de jours JodaTime Instant

Je suis en train d'écrire un utilitaire simple méthode pour ajouter aninteger nombre de jours Joda time instant. Voici mon premier coup de couteau.

/**
 * Adds a number of days specified to the instant in time specified.
 *
 * @param instant - the date to be added to
 * @param numberOfDaysToAdd - the number of days to be added to the instant specified
 * @return an instant that has been incremented by the number of days specified
 */
public static Instant addNumberOfDaysToInstant(final Instant instant, final int numberOfDaysToAdd) {
    Days days = Days.days(numberOfDaysToAdd);
    Interval interval = new Interval(instant, days);
    return interval.getEnd().toInstant();
}

Cela fonctionne très bien pour la plupart, sauf si vous prenez, par exemple, lorsque le nombre de jours supplémentaires vous emmène à travers la BST /GMT limite. Voici un petit exemple.

public class DateAddTest {

/**
* Zone à utiliser pour l'entrée et la sortie
*/
private static final DateTimeZone ZONE = DateTimeZone.forId("Europe/London");

/**
 * Formatter used to translate Instant objects to & from strings.
 */
private static final DateTimeFormatter FORMATTER = DateTimeFormat.forPattern(DATE_FORMAT).withZone(ZONE);


/**
 * Date format to be used
 */
private static final String DATE_FORMAT = "dd/MM/yyyy";


public static void main(String[] args) {

 DateTime dateTime = FORMATTER.parseDateTime("24/10/2009");
 Instant toAdd = dateTime.toInstant();
 Instant answer = JodaTimeUtils.addNumberOfDaysToInstant(toAdd, 2);

 System.out.println(answer.toString(FORMATTER)); //25/10/2009
}

}

Je pense que ce problème est dû à l'intervalle de ne pas prendre en compte le fait qu'il a traversé le bst de la frontière. Toute idée d'une meilleure façon de mettre en œuvre ce serait appréciée.

  • Quel fuseau horaire vous attendez-vous à l'Instant argument à être créé à partir de? Il cohérent? Le calcul est vide de sens sans que la valeur d'être pris en compte en quelque sorte, puisque vous êtes incapable d'utiliser le correctif original proposé par Jon.
InformationsquelleAutor mR_fr0g | 2009-06-29