HTTP Last-Modified nagłówek zawiera datę w następującym formacie (przykład):
Wed, 09 Apr 2008 23:55:38 GMT
Jaki jest najprostszy sposób analizowania java.util.Date z tego ciągu?Jak przeanalizować datę z HTTP Last-Modified header?
Odpowiedz
To powinno być dość blisko
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)
z Apache-komponentów
(Legacy: DateUtil.parseDate(dateString)
(od Apache Commons-httpclient))
To ma poprawny format zdefiniowany jako stała, co gwarantuje zgodność z protokołem.
+1 bicie mnie do tego :) – ZoogieZork
BTW, commons-httpclient został zastąpiony przez org.apache.httpcomponents: httpclient. –
Ta klasa to teraz 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 definiuje trzy różne formaty dat, które musi zrozumieć zrozumiały klient.
Apache HttpClient zapewnia DateUtil który jest zgodny ze standardem:
Date date = DateUtils.parseDate(headerValue);
Tylko pomniejszy punkt na wypadek, gdyby ludzie się pogubili: format daty RFC to 1123, o którym mowa w RFC 2616 tutaj: http://www.w3.org/Protocols/rfc2616 /rfc2616-sec3.html#sec3.3.1 – daveb
"format daty RFC to 1123", który sam w sobie odnosi się do RFC 822 – Raedwald
@Raedwald, który sam został zastąpiony przez [RFC 2822] (https://www.ietf.org/rfc/ rfc2822.txt). – iain
Jeśli używasz URLConnection
s, nie jest już przydatny sposób.
Zobacz URLConnection#getLastModified
Metoda ta analizuje ciąg daty i zwraca wartość milisekund. Następnie możesz z powodzeniem utworzyć z tą wartością Date
.
Należy zauważyć, że ta metoda używa nieaktualnej metody "Date.parse", przynajmniej od Oracle JDK 7, która umożliwia interpretację wszystkich trzech protokołów HTTP 1.1 [Pełna data] (http : //www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1) formaty. –
java.time
Przy użyciu nowego Java Date and Time API kod byłoby po prostu:
ZonedDateTime zdt = ZonedDateTime.parse("Wed, 09 Apr 2008 23:55:38 GMT", DateTimeFormatter.RFC_1123_DATE_TIME);
DateTimeFormatter
klasa wstępnie określa stałą dla danego formatu w RFC_1123_DATE_TIME
. Jak sama nazwa wskazuje, RFC 1123 definiuje ten format.
Zobacz [kod na żywo w IdeOne.com] (http://ideone.com/Fzh9Xw). –
- 1. Jak przeanalizować datę za pomocą milisekund?
- 2. Jak przeanalizować datę/godzinę na łańcuchu?
- 3. Jak przeanalizować datę, w tym strefę czasową z czasem Jody
- 4. HTTP Header dla Jednostki Zakres wymienia
- 5. Java 8: jak przeanalizować datę ważności karty debetowej?
- 6. Jak przeanalizować sformatowany obiekt String na datę w Javie
- 7. Jak przeanalizować datę/godzinę RFC 2822 w datetime Pythona?
- 8. Jak przeanalizować żądanie HTTP z brakującym typem zawartości w Express/NodeJs, przyjmując domyślny typ zawartości?
- 9. Jak mogę odzyskać JSON z punktu końcowego HTTP, z programu Excel na MacOS i przeanalizować go?
- 10. Jak przeanalizować plik YAML?
- 11. Jak przeanalizować tablicę numpy?
- 12. CsQuery przeanalizować zbiór elementów li
- 13. Jak przeanalizować ASN.1 z Haskellem?
- 14. HttpWebRequest Data Header Format
- 15. C# HttpWebRequest Data Header Formatowanie
- 16. Czy mogę uzyskać datę zmodyfikowania pliku HTTP?
- 17. Swagger (Swashbuckle) hide header
- 18. ReSharper - jak ponownie przeanalizować rozwiązanie?
- 19. Który z X-UA-Compatible ma pierwszeństwo? Http-header lub Meta-tags?
- 20. jak zmienić datę highstock na perską datę
- 21. Jak to przeanalizować? ftpWebRequest ListDirectorDetials
- 22. Jak przeanalizować plik M3U8 w Objective C?
- 23. Używanie @header w ANTLR
- 24. AWS Zapytanie Uwierzytelnianie: Koduje Header
- 25. Jak przeanalizować ciąg do BigDecimal?
- 26. WPF TabItem Header Styling
- 27. Spray-Json: Jak przeanalizować układ Json?
- 28. Jak przeanalizować usługę WWW XML w Swift?
- 29. Jak przeanalizować treść odpowiedzi w języku Java, gdy żądanie HTTP ma status powrotu 401
- 30. Jak ustawić datę UIDatePicker na inną datę?
+1 prawie poprawne, 'hh' powinno być' HH', jako że godziny to 0-23. – notnoop
Dobry połów, naprawiony teraz – Shaun
Miałem także strefę czasową "ZZZ" zamiast "zzz". Mam nadzieję, że to zrobi. Jeśli nadal masz problemy, możesz odwołać się do dokumentacji powiązanej powyżej. – Shaun