⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpdateparser.java

📁 一款Java实现的HTTP代理服务器
💻 JAVA
字号:
package rabbit.http;import java.text.DateFormat;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;/** A utility class that parses date in the http headers. *  A date in http may be written in many different formats so try  *  them all. * * @author <a href="mailto:robo@khelekore.org">Robert Olofsson</a> */public class HttpDateParser {    private static SimpleDateFormat sdf1 =     new SimpleDateFormat ("EE',' dd MMM yyyy HH:mm:ss 'GMT'", Locale.US);    private static SimpleDateFormat sdf2 =     new SimpleDateFormat ("EEEE, dd-MMM-yy HH:mm:ss 'GMT'", Locale.US);    private static SimpleDateFormat sdf3 =     new SimpleDateFormat ("EE MMM d HH:mm:ss yyyy", Locale.US);    private static SimpleDateFormat sdf4 =     new SimpleDateFormat ("EE MMM  d HH:mm:ss yyyy", Locale.US);    private static long offset;    /** The default constructor.     */    public HttpDateParser (){    }    /** Set the time offset relative GMT.      */    public static void setOffset (long offset) {	HttpDateParser.offset = offset;    }    /** Try to get a date from the given string. According to RFC 2068      *  We have to read 3 formats.     * @param date the String we are trying to parse.     * @return a Date or null if parsing was not possible.     */    public static Date getDate (String date) {		if (date == null)	    return null;	Date d = null;	d = getDate (date, sdf1, offset);	if (d == null) {	    d = getDate (date, sdf2, offset);	    if (d == null) {		d = getDate (date, sdf3, offset);		if (d == null) {		    d = getDate (date, sdf4, offset);		}	    }	}	return d;    }    private static Date getDate (String date, DateFormat sdf, long offsetUsed) {	try {	    ParsePosition pos = new ParsePosition (0);	    Date d;	    synchronized (sdf) {		d = sdf.parse (date, pos);	    }	    if (pos.getIndex () == 0 || pos.getIndex () != date.length ())		return null;	    d.setTime (d.getTime () + offsetUsed);	    return d;	} catch (NumberFormatException e) {	    // ignore...	}	return null;    }    /** Get a String from the date.     * @param d the Date to format.     * @return a String describing the date in the right way.     */    public static String getDateString (Date d) {	return sdf1.format (d);    }    private static void compare (String d1, String d2) {	Date dd1 = getDate (d1);	Date dd2 = getDate (d2);	if (dd1 != null) {	    System.out.println ("dd1: " + dd1 + "\ndd2: " + dd2);	    if (dd2 != null)		System.out.println ("diff: " + (dd1.getTime () - dd2.getTime ()));	}    }    /** Simple self test method. */    public static void main (String[] args) {	String d1 = "Sat, 07 Feb 2004 22:14:05 GMT";	String d2 = "Sun, 06 Nov 2043 08:49:37 GMT - 49 years (1994)";	String d3 = "Tue, 18 Feb 2003 12:32:40 GMT";	String d4 = "Tue, 18 Feb 2003 13:32:40 GMT";	String d5 = "Sun Mar 12 13:37:23 2003";	String d6 = "Sun Mar  2 13:47:48 2003";	String d7 = "Sun, 09 Mar 2003 10:54:32 GMT";	String d8 = "Sunday, 09-Mar-103 10:54:32 GMT";	String d9 = "Sun, 09 Mar 2003 10:54:34 GMT";	String d10 = "Sun Mar  9 10:54:34 2003";		Date date1 = getDate (d1);	System.out.println ("date1: " + date1);	Date date2 = getDate (d2);	System.out.println ("date2: " + date2);	Date date3 = getDate (d3);	System.out.println ("date3: " + date3);	Date date4 = getDate (d4);	System.out.println ("date4: " + date4);	Date date5 = getDate (d5);	System.out.println ("date5: " + date5);	Date date6 = getDate (d6);	System.out.println ("date6: " + date6);		compare (d7, d8);	compare (d9, d10);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -