Ein anderer Weg wird mit dem neuen java.time
-API in 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
-Update aufgrund Ihrer Wahl von den Zeitzonen:
Sie haben versucht, die Systemzeitzone implizit zu verwenden, um die aktuelle Ortszeit zu ermitteln, wenden Sie jedoch einen festen Offset von UTC + 0000 an. Dies ist eine inkonsistente Kombination. Wenn Sie eine solche Nullpunktverschiebung anwenden, sollten Sie auch das aktuelle Datum nach UTC + 0000 ermitteln, nicht in Ihrer Systemzeitzone (ZoneId.systemDefault()
).
Der Vorschlag des Herausgebers @Nim
Alternativ - die Zeichenfolge oben nicht die richtigen kann offset:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd'T'HH:mm:ssZ");
String date = LocalDate.now().plusDays(7).atTime(12, 0).atZone(ZoneId.systemDefault()).format(formatter);
das Ergebnis ergeben würde:
20161114T12: 00: 00 + 0100
das ist wahrscheinlich nicht das, was Sie wollen. Ich versuche auch, den Ausdruck LocalDate.now()
ohne irgendwelche Argumente zu vermeiden, weil es die Abhängigkeit von der Systemzeitzone verbirgt.
siehe http://stackoverflow.com/questions/2201925/converting-iso-8601-compliant-string-to-java-util-date –
'String Datum = sdf.format (Date1) +" T12: 00: 00 + 0000 ";'. Befolgen Sie außerdem die Java-Namenskonventionen. Verwenden Sie keine Großbuchstaben für Ihre Variablen – AJPerez