如何从HTTP Last-Modified头parsingdate?

HTTP Last-Modified标题包含以下格式的date(示例):
Wed, 09 Apr 2008 23:55:38 GMT
从这个stringparsingjava.util.Date最简单的方法是什么?

这应该是非常接近的

 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); 

的SimpleDateFormat

来自apache http-components的DateUtil.parseDate(dateString)

(legacy: DateUtil.parseDate(dateString) (来自apache commons-httpclient))

它具有正确的格式定义为一个常量,这是保证符合协议。

RFC 2616定义了符合客户必须理解的三种不同的date格式。

Apache HttpClient提供了一个符合标准的DateUtil:

https://hc.apache.org/httpcomponents-client-4.3.x/httpclient/apidocs/org/apache/http/client/utils/DateUtils.html

https://apache.googlesource.com/httpclient/+/4.3.x/httpclient/src/main/java/org/apache/http/client/utils/DateUtils.java

Date date = DateUtils.parseDate( headerValue );

如果你正在使用URLConnection ,那么已经有一个方便的方法。

请参阅URLConnection#getLastModified

此方法分析datestring并返回毫秒值。 然后,您可以愉快地创build一个具有该值的Date

java.time

当使用新的Javadate和时间API时 ,代码将会是:

 ZonedDateTime zdt = ZonedDateTime.parse("Wed, 09 Apr 2008 23:55:38 GMT", DateTimeFormatter.RFC_1123_DATE_TIME); 

DateTimeFormatter类在RFC_1123_DATE_TIME为该特定格式预先定义了一个常量。 顾名思义, RFC 1123定义了这种格式。