Reputation: 4165
HTTP Last-Modified header contains date in following format (example):
Wed, 09 Apr 2008 23:55:38 GMT
What is the easiest way to parse java.util.Date from this string?
Upvotes: 64
Views: 54294
Reputation: 4023
RFC 2616 defines three different date formats that a conforming client must understand.
The Apache HttpClient provides a DateUtil that complies with the standard:
Date date = DateUtils.parseDate( headerValue );
Upvotes: 25
Reputation: 499
When using the new Java Date and Time API the code would simply be:
ZonedDateTime zdt = ZonedDateTime.parse("Wed, 09 Apr 2008 23:55:38 GMT", DateTimeFormatter.RFC_1123_DATE_TIME);
The DateTimeFormatter
class pre-defines a constant for that particular format in RFC_1123_DATE_TIME
. As the name suggests, RFC 1123 defines that format.
Upvotes: 40
Reputation: 597076
DateUtil.parseDate(dateString)
from apache http-components
(legacy: DateUtil.parseDate(dateString)
(from apache commons-httpclient))
It has the correct format defined as a Constant, which is guaranteed to be compliant with the protocol.
Upvotes: 64
Reputation: 1508
This should be pretty close
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);
Upvotes: 78
Reputation: 21978
If you're using URLConnection
s, there is already a handy method.
See URLConnection#getLastModified
This method parses the date string and returns a milliseconds value. Then you can happily create a Date
with that value.
Upvotes: 5