2016-11-07 4 views
0

Ich brauche die aktuellen Date + 7 Tage in iso8601 Format wie folgt zu speichern:Wie speichere ich iso8601 Date in Java?

20161107T12:00:00+0000 

Wo der Teil nach dem "T" ist festgelegt.

habe ich versucht, die folgenden:

Calendar exDate1 = Calendar.getInstance(); 
exDate1.add(Calendar.DATE , 7); 
Date Date1 = exDate1.getTime(); 
SimpleDateFormat sdf = new SimpleDateFormat("YYYYMMDD"); 
String Date = sdf.format(Date1 + "T12:00:00+0000"); 

ohne Erfolg.

+1

siehe http://stackoverflow.com/questions/2201925/converting-iso-8601-compliant-string-to-java-util-date –

+4

'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

Antwort

1

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.

1

Verwendung dieses ‚yyyyMMdd'pattern

Calendar currentDate = Calendar.getInstance(); 
    currentDate.add(Calendar.DATE, 7); 
    Date date = currentDate.getTime(); 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); 

    String formattedDate = sdf.format(date).concat("T12:00:00+0000");