Datum formatieren

Alex04

Bekanntes Mitglied
Hallo,
ich schreibe derzeit an einem Backend und bekomme als HTTP header eine sogenannte Conditional Get Anfrage. D.h. im header ist das Attribute "If-Modified-Since" mit dem Datum im Format "EE, dd MMM yyyy HH:mm:ss z" gesetzt (Datumsformat ist vorgegeben, siehe RFC!)

Allerdings kann mein Server dieses Datum nicht parsen:

Unparseable date: "Sat, 29 Oct 2011 19:43:31 GMT"

Ich habe folgende Varianten versucht:

Code:
SimpleDateFormat formatter = new SimpleDateFormat("EE, dd MMM yyyy HH:mm:ss z");
		Date lastModifiedDate;
		try {
			lastModifiedDate = formatter.parse(lastModified);
		} catch (ParseException e) {
			return new ResponseEntity<String>(headers, HttpStatus.CONFLICT);
		}

Code:
Date lastModifiedDate;
		try {
			lastModifiedDate = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG).parse(lastModified);
		} catch (ParseException e) {
			logger.error(e.getMessage());
			return new ResponseEntity<String>(headers, HttpStatus.CONFLICT);
		}


Beide leider ohne Erfolg, immer unparsable Date.

Weiß vielleicht jemand die Lösung zu diesem Problem?

Vielen Dank schon mal für eure Hilfe!
Lg
Alex
 
der Trick ist immer, selber ein Date-Objekt zu erstellen und zu formatieren, die String-Ausgabe mit dem gegebenen String zu vergleichen,
gut, da muss man nicht unbedingt das Problem erkennen,
es ist hier die englische Sprache, übergib Locale.ENGLISH als zweiten Parameter an den SimpleDateFormat-Konstruktor,
 
Versuch mal
Java:
SimpleDateFormat formatter = new SimpleDateFormat("EE, dd MMM yyyy HH:mm:ss z", Locale.US);

@SlaterB: Schon wieder zweiter😉
 
Hallo und Danke schon mal für die Antworten!

Das hilft leider nix, jetzt läuft es zwar auf dem Server, aber in der Testumgebung funktioniert es nicht mehr:

Unparseable date: "Do, 24 Nov 2011 10:00:19 GMT"

Weder mit English, noch mit US
 
wenn die Eingabe nicht einheitlich ist, wirds wirklich nicht leicht fürs Programm 😉
evtl. immer beide Varianten ausprobieren, bzw. am ersten übergebenen Date lernen, danach beim richtigen Format bleiben,
oder in den Einstellungen des Programms je nach Umgebung vorgeben
 
Du kannst die Locale der Applikation beim Start angeben:

Java:
java -Duser.language=en -Duser.region=US <weitere Parameter>...

Dann musst Du natürlich die Locale-Angabe beim SimpleDateFormat weglassen.
 

Zurück
Oben