Attention au problème de l'heure d'été! La fonction "addDays" n'est pas consciente de l'heure d'été. Par conséquent, si vous passez par-dessus une transition DST lors de l'ajout de jours (dans un fuseau horaire avec heure d'été), l'heure sera faussée.
Pour résoudre celui-ci divisé la date/heure dans des parties de date et d'heure séparés d'abord, ajoutez les jours à la partie date puis recombiner à la fin, comme:
DateTime dt = ...;
Integer days = ...;
Date d = dt.date().addDays(days);
Time t = dt.time();
dt = DateTime.newInstance(d, t);
Si vous travaillez dans le Royaume-Uni (London) fuseau horaire suivant anonyme Apex illustre bien le problème:
DateTime dt = DateTime.newInstance(2017, 10, 28, 23, 59, 59);
System.debug('Adding days directly: ' + dt.addDays(2));
Date d = dt.date().addDays(2);
Time t = dt.time();
dt = DateTime.newInstance(d, t);
System.debug('Adding days in parts: ' + dt);