I'm going to go ahead and add this. One question. There seems to be a number of other date formats used by the cookie parser. They mostly look like slight variations on the RFC 1123 and 1035 ones. Should we also be using these for header date values?

Mike

On Friday, April 11, 2003, at 11:11 AM, Kalnichevski, Oleg wrote:

Chris,

I (personally) see this code as a valuable addition to org.apache.commons.httpclient.contrib or org.apache.commons.httpclient.utils packages. Do you mind investing a bit more of your time to massage this code into DateParser class or something of a sort? It would also be quite nice to factor out cookie 'expire' attribute parsing logic and merge it into this class.

Cheers

Oleg
-----Original Message-----
From: Chris Brown [mailto:[EMAIL PROTECTED]
Sent: Friday, April 11, 2003 16:51
To: Commons HttpClient Project
Subject: Re: Parsing "Last-Modified" HTTP response header



Well, I'm an impatient chap... didn't find the code, so I coded it myself.

Here as a reference for anyone else (maybe worth including in the API, once
it's been verified). Careful with line breaks...
____________________________________________________________


/**
* Date format pattern used to parse HTTP date headers in RFC 1123 format.
* <p>Dates may be formatted using the following patterns (listed in order
* of preference):</p>
* <ol>
* <li><code>RFC 1123 format</code> (recommended)</li>
* <li>[EMAIL PROTECTED] #PATTERN_RFC1036 RFC 1036 format) (deprecated)</li>
* <li>[EMAIL PROTECTED] #PATTERN_ASCTIME ANSI C asctime() format} (deprecated)</li>
* </ol>
*/
public static final String PATTERN_RFC1123 =
"EEE, dd MMM yyyy HH:mm:ss zzz";


/**
* Date format pattern used to parse HTTP date headers in RFC 1036 format.
* <p>Dates may be formatted using the following patterns (listed in order
* of preference):</p>
* <ol>
* <li>[EMAIL PROTECTED] #PATTERN_RFC1123 RFC 1123 format} (recommended)</li>
* <li><code>RFC 1036 format</code> (deprecated)</li>
* <li>[EMAIL PROTECTED] #PATTERN_ASCTIME ANSI C asctime() format} (deprecated)</li>
* </ol>
*/
public static final String PATTERN_RFC1036 =
"EEEE, dd-MMM-yy HH:mm:ss zzz";


/**
* Date format pattern used to parse HTTP date headers in ANSI C
<code>asctime()</code> format.
* <p>Dates may be formatted using the following patterns (listed in order
* of preference):</p>
* <ol>
* <li>[EMAIL PROTECTED] #PATTERN_RFC1123 RFC 1123 format} (recommended)</li>
* <li>[EMAIL PROTECTED] #PATTERN_RFC1036 RFC 1036 format) (deprecated)</li>
* <li><code>ANSI C asctime() format</code> (deprecated)</li>
* </ol>
*/
public static final String PATTERN_ASCTIME =
"EEE MMM d HH:mm:ss yyyy";


/**
* Parses a HTTP header date value.
*
* @param dateHeaderValue the date header value to parse.
* @return the parsed date.
*
* @throws ParseException if the date could not be parsed according to the
* one of the following formats (in order of preference):
* [EMAIL PROTECTED] #PATTERN_RFC1123 RFC 1123},
* [EMAIL PROTECTED] #PATTERN_RFC1036 RFC 1036},
* [EMAIL PROTECTED] #PATTERN_ASCTIME ANSI C asctime() format}.
*
* @author Christopher Brown
*/
public static Date parseDateHeader(String dateHeaderValue) throws
ParseException
{
Date date = null;
if (dateHeaderValue != null)
{
SimpleDateFormat dateParser = new SimpleDateFormat(PATTERN_RFC1123,
Locale.US);
dateParser.setTimeZone(TimeZone.getTimeZone("GMT"));
try
{
date = dateParser.parse(dateHeaderValue);
}
catch (ParseException exRFC1123)
{
dateParser.applyPattern(PATTERN_RFC1036);
try
{
date = dateParser.parse(dateHeaderValue);
}
catch (ParseException exRFC1036)
{
dateParser.applyPattern(PATTERN_ASCTIME);
date = dateParser.parse(dateHeaderValue);
}
}
}
return date;
}






---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to