2017-07-27 3 views
-1

Salut J'utilise Salesforce Apex, J'ai une date en tant que chaîne comme ci-dessous. Je dois y ajouter des jours en utilisant Apex.Comment ajouter des jours à jour dans Salesforce Apex?

String dateTime = '2017-07-08T23:59:59Z'; 

Si j'ajoute un jour alors il devrait être 2017-07-09T23: 59: 59Z sous forme de chaîne. Comment vais-je faire ça?

Merci!

Répondre

0

Vous devez convertir la chaîne en date et heure, puis ajouter des jours. Vous pouvez le reformater après

String stringDateTime = '2017-07-08T23:59:59Z'; 
DateTime dt = DateTime.valueOfGmt(stringDateTime); 
DateTime tomorrow = dt.addDays(1); 
DateTime nextMonth = dt.addMonths(1); 
DateTime anniversary = dt.addYears(1); 
String formattedDateTime = dt.format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\''); 
0

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);