Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common Development
   * and Distribution License("CDDL") (collectively, the "License").  You
   * may not use this file except in compliance with the License.  You can
  * obtain a copy of the License at
  * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  * When distributing the software, include this License Header Notice in each
  * file and include the License file at packager/legal/LICENSE.txt.
  * GPL Classpath Exception:
  * Oracle designates this particular file as subject to the "Classpath"
  * exception as provided by Oracle in the GPL Version 2 section of the License
  * file that accompanied this code.
  * Modifications:
  * If applicable, add the following below the License Header, with the fields
  * enclosed by brackets [] replaced by your own identifying information:
  * "Portions Copyright [year] [name of copyright owner]"
  * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
  * Version 2] license."  If you don't indicate a single choice of license, a
  * recipient has the option to distribute your version of this file under
  * either the CDDL, the GPL Version 2 or to extend the choice of license to
  * its licensees as provided above.  However, if you add GPL Version 2 code
  * and therefore, elected the GPL Version 2 license, then the option applies
  * only if the new code is made subject to such option by the copyright
  * holder.
  * This file incorporates work covered by the following copyright and
  * permission notice:
  * Copyright 2004 The Apache Software Foundation
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
 package org.apache.tomcat.util.buf;
 import java.util.*;
 import java.text.*;
Common place for date utils.

Will be replaced with a more efficient impl, based on FastDateFormat, with an API using less objects.
Jason Hunter []
James Todd []
Costin Manolache
 public class DateTool {

US locale - all HTTP dates are in english
     private final static Locale LOCALE_US = .;

GMT timezone - all HTTP dates are on GMT
     public final static TimeZone GMT_ZONE = TimeZone.getTimeZone("GMT");

format for RFC 1123 date string -- "Sun, 06 Nov 1994 08:49:37 GMT"
     public final static String RFC1123_PATTERN =
         "EEE, dd MMM yyyy HH:mm:ss z";
     // format for RFC 1036 date string -- "Sunday, 06-Nov-94 08:49:37 GMT"
     public final static String rfc1036Pattern =
         "EEEEEEEEE, dd-MMM-yy HH:mm:ss z";
     // format for C asctime() date string -- "Sun Nov  6 08:49:37 1994"
     public final static String asctimePattern =
         "EEE MMM d HH:mm:ss yyyy";

Pattern used for old cookies
    private final static String OLD_COOKIE_PATTERN = "EEE, dd-MMM-yyyy HH:mm:ss z";

DateFormat to be used to format dates. Called from MessageBytes
    private final static DateFormat rfc1123Format =
DateFormat to be used to format old netscape cookies Called from ServerCookie
    private final static DateFormat oldCookieFormat =
    private final static DateFormat rfc1036Format =
    private final static DateFormat asctimeFormat =
    static {
    private static String rfc1123DS;
    private static long   rfc1123Sec;
    private static StringManager sm =
    // Called from MessageBytes.getTime()
    static long parseDateMessageBytes value ) {
     	return parseDatevalue.toString());
    // Called from MessageBytes.setTime
    public static String format1123Date d ) {
	String dstr=null;
	synchronized() {
	    dstr = format1123(d);
	return dstr;
    public static String format1123Date d,DateFormat df ) {
        long dt = d.getTime() / 1000;
        if (( != null) && (dt == ))
            return ;
          = df.formatd );
         = dt;
        return ;
    // Called from ServerCookie
    public static void formatOldCookieDate dStringBuffer sb,
					  FieldPosition fp )
	synchronized() {
	    .formatdsbfp );
    // Called from ServerCookie
    public static String formatOldCookieDate d )
	String ocf=null;
	synchronized() {
	    ocf.formatd );
	return ocf;

Called from HttpServletRequest.getDateHeader(). Not efficient - but not very used.
    public static long parseDateString dateString ) {
	return parseDate(dateString,format);
    public static long parseDateString dateStringDateFormat []format ) {
	Date date=null;
	for(int i=0; i < format.lengthi++) {
	    try {
		date = format[i].parse(dateString);
		return date.getTime();
	    } catch (ParseException e) { }
	    catch (StringIndexOutOfBoundsException e) { }
	String msg = .getString(""dateString);
	throw new IllegalArgumentException(msg);
New to GrepCode? Check out our FAQ X