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

📄 dateformater.java

📁 lucene2.2.0版本
💻 JAVA
字号:
/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 * *     http://www.apache.org/licenses/LICENSE-2.0 * * 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.lucene.gdata.utils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;import java.util.Stack;/** * This class uses the {@link java.text.SimpleDateFormat} class to format dates * into strings according to given date pattern. * <p> * As the creation of <tt>SimpleDateFormat</tt> objects is quiet expensive and * formating dates is used quiet fequently the objects will be cached and reused * in subsequent calls. * </p> * <p> * This implementation is thread safe as it uses {@link java.util.Stack} as a * cache * </p> *  * @author Simon Willnauer *  */public class DateFormater {    private final Stack<SimpleDateFormat> objectStack = new Stack<SimpleDateFormat>();        private static final DateFormater formater = new DateFormater();    /**     * Date format as it is used in Http Last modified header (Tue, 15 Nov 1994     * 12:45:26 GMT)     */    public final static String HTTP_HEADER_DATE_FORMAT = "EEE, d MMM yyyy HH:mm:ss z";    /**     *  Date format as it is used in Http Last modified header (Tue, 15 Nov 1994     * 12:45:26 +0000)     */    public final static String HTTP_HEADER_DATE_FORMAT_TIME_OFFSET = "EEE, d MMM yyyy HH:mm:ss Z";    protected DateFormater() {        super();    }    /**     * Formats the given Date into the given date pattern.     *      * @param date -     *            the date to format     * @param format -     *            date pattern     * @return - the string representation of the given <tt>Date</tt>     *         according to the given pattern     */    public static String formatDate(final Date date, String format) {        if (date == null || format == null)            throw new IllegalArgumentException(                    "given parameters must not be null");        SimpleDateFormat inst = formater.getFormater();        inst.applyPattern(format);        try{            return inst.format(date);        }finally{            formater.returnFomater(inst);        }    }    /**     * Parses the given string into one of the specified formates     * @param date - the string to parse     * @param formates - formates     * @return a {@link Date} instance representing the given string     * @throws ParseException - if the string can not be parsed     */    public static Date parseDate(final String date, final String...formates) throws ParseException{        for (int i = 0; i < formates.length; i++) {            try {             return parseDate(date,formates[i]);            } catch (ParseException e) {                //            }        }        throw new ParseException("Unparseable date: "+date,0);            }        /**     * Parses the given string into the specified formate     * @param dateString - the string to parse     * @param pattern - the expected formate     * @return a {@link Date} instance representing the given string     * @throws ParseException - if the string can not be parsed     */    public static Date parseDate(final String dateString,String pattern) throws ParseException{        if(dateString == null|| pattern == null)            throw new IllegalArgumentException(            "given parameters must not be null");                SimpleDateFormat inst = formater.getFormater();        try{        inst.applyPattern(pattern);        return inst.parse(dateString);        }finally{            formater.returnFomater(inst);        }            }    protected SimpleDateFormat getFormater() {        if (this.objectStack.empty())            return new SimpleDateFormat(DateFormater.HTTP_HEADER_DATE_FORMAT,Locale.ENGLISH);        return this.objectStack.pop();        }    protected void returnFomater(final SimpleDateFormat format) {        if (this.objectStack.size() <= 25)            this.objectStack.push(format);            }}

⌨️ 快捷键说明

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