HTTP Last-Modified contiene data nel seguente formato (esempio):
Wed, 09 Apr 2008 23:55:38 GMT
Qual è il modo più semplice per analizzare java.util.Date da questa stringa?Come analizzare la data dall'intestazione Last-Modified HTTP?
risposta
Questo dovrebbe essere abbastanza vicino
String dateString = "Wed, 09 Apr 2008 23:55:38 GMT";
SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz");
Date d = format.parse(dateString);
DateUtil.parseDate(dateString)
da HTTP Apache-componenti
(legacy: DateUtil.parseDate(dateString)
(da Apache Commons-HttpClient))
Ha la formato corretto definito come costante, che garantisce la conformità al protocollo.
+1 mi ha picchiato :) – ZoogieZork
BTW, commons-httpclient è stato sostituito da org.apache.httpcomponents: httpclient. –
La classe è ora org.apache.http.impl.cookie.DateUtils http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/cookie/DateUtils.html – daveb
RFC 2616 definisce tre diversi formati di data che un client conforme deve capire.
L'Apache HttpClient fornisce una DateUtil che è conforme alla norma:
Date date = DateUtils.parseDate(headerValue);
Solo un punto minore nel caso in cui le persone si confondano: il formato della data RFC è 1123, a cui si fa riferimento da RFC 2616 qui: http://www.w3.org/Protocols/rfc2616 /rfc2616-sec3.html#sec3.3.1 – daveb
"il formato della data RFC è 1123" che si riferisce a RFC 822 – Raedwald
@Raedwald che a sua volta è sostituito da [RFC 2822] (https://www.ietf.org/rfc/ rfc2822.txt). – iain
Se stai usando URLConnection
s, c'è già un metodo pratico.
Vedi URLConnection#getLastModified
Questo metodo analizza la stringa di data e restituisce un valore millisecondi. Quindi puoi creare felicemente un Date
con quel valore.
Si noti che questo metodo utilizza il metodo deprecato 'Date.parse', almeno a partire da Oracle JDK 7, che _sembra_ per supportare tutti e tre HTTP 1.1 [Data completa] (http : //www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1) formati. –
java.time
Quando si utilizza la nuova Java Date and Time API il codice sarebbe semplicemente:
ZonedDateTime zdt = ZonedDateTime.parse("Wed, 09 Apr 2008 23:55:38 GMT", DateTimeFormatter.RFC_1123_DATE_TIME);
Il DateTimeFormatter
classe pre-definisce una costante per quel particolare formato RFC_1123_DATE_TIME
. Come suggerisce il nome, RFC 1123 definisce tale formato.
Vedere [codice live in IdeOne.com] (http://ideone.com/Fzh9Xw). –
- 1. SQLite memorizza la data lastmodified di una riga?
- 2. Come analizzare una stringa di data HTTP in Python?
- 3. node.js non può analizzare la data ISOString?
- 4. Come analizzare MJPEG HTTP Stream in C++?
- 5. Come analizzare la stringa fino alla data in xslt 2.0
- 6. Java: come analizzare rigorosamente una data?
- 7. Come analizzare data/ora dalla stringa?
- 8. javascript: come analizzare una stringa data
- 9. Come analizzare una data con millisecondi?
- 10. analizzare una data in rotaie
- 11. Come analizzare la risposta XML utilizzando jQuery
- 12. Come analizzare la stringa di data in formato JSON nel formato data
- 13. come analizzare la memoria golang
- 14. Come analizzare correttamente le richieste HTTP in arrivo
- 15. Come analizzare la risposta SOAP senza SoapClient
- 16. Come posso analizzare gli URL HTTP in C#?
- 17. Globalize.js - come analizzare data e l'ora non solo risalgono
- 18. Come analizzare un file Android /data/anr/traces.txt?
- 19. Come analizzare la stringa json in Android?
- 20. Come analizzare una data formattata ISO in Flex (AS3)?
- 21. Come analizzare il corpo multipart/form-data con Koa?
- 22. Usa aumentare date_time per analizzare e creare HTTP date
- 23. Come analizzare la risposta Json in Android?
- 24. analizzare la stringa in JavaScript
- 25. Qual è la logica dietro l'intestazione della data HTTP?
- 26. Creare e analizzare richieste HTTP multipart in Python
- 27. Come analizzare XML SOAP?
- 28. Java 8: come analizzare la data di scadenza della carta di debito?
- 29. : Come analizzare la stringa data/ora in un fuso orario specifico
- 30. Come impostare attributesOfItemAtPath (come data/ora di modifica) su iPhone
+1 quasi corretta, il 'hh' dovrebbe essere' HH', come le ore sono 0-23. – notnoop
Buona cattura, ora fissa – Shaun
Avevo anche il fuso orario "ZZZ" invece di "zzz". Spero che lo faccia. Se hai ancora problemi puoi fare riferimento alla documentazione collegata sopra. – Shaun