Une autre façon utilise le nouveau java.time
-API en Java-8:
String result =
DateTimeFormatter.BASIC_ISO_DATE.format(
LocalDate.now(ZoneOffset.UTC).plusDays(7)
) + "T12:00:00+0000";
System.out.println(result); // 20161114T12:00:00+0000
Mise à jour en raison de votre choix de décalage horaire:
Vous avez essayé d'utiliser implicitement le fuseau horaire du système pour déterminer l'heure locale actuelle, mais appliquez un décalage fixe de UTC + 0000. C'est une combinaison incohérente. Si vous appliquez un tel décalage d'origine, vous devez également déterminer la date actuelle en fonction de UTC + 0000, pas dans le fuseau horaire de votre système (ZoneId.systemDefault()
).
La proposition de rédacteur en chef @Nim
alternative - la chaîne ci-dessus peut ne pas avoir le bon décalage:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd'T'HH:mm:ssZ");
String date = LocalDate.now().plusDays(7).atTime(12, 0).atZone(ZoneId.systemDefault()).format(formatter);
produirait le résultat:
20161114T12: 00: 00 + 0100
ce qui n'est probablement pas ce que vous voulez. J'essaie aussi d'éviter l'expression LocalDate.now()
sans aucun argument car elle cache la dépendance sur le fuseau horaire du système.
s'il vous plaît consulter http://stackoverflow.com/questions/2201925/converting-iso-8601-compliant-string-to-java-util-date –
'String Date = sdf.format (Date1) +" T12: 00: 00 + 0000 ";'. Suivez également les conventions de dénomination Java. N'utilisez pas de noms en majuscules pour vos variables. – AJPerez