工具类:日期处理

来源:互联网 发布:c语言网上培训班 编辑:程序博客网 时间:2024/05/22 02:55
/* * 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.ftpserver.util;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.TimeZone;/** * <strong>Internal class, do not use directly.</strong> *  * Standard date related utility methods. * * @author <a href="http://mina.apache.org">Apache MINA Project</a> */public class DateUtils {    private static final TimeZone TIME_ZONE_UTC = TimeZone.getTimeZone("UTC");    private final static String[] MONTHS = { "Jan", "Feb", "Mar", "Apr", "May",            "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };    /*     * Creates the DateFormat object used to parse/format     * dates in FTP format.     */    private static final ThreadLocal<DateFormat> FTP_DATE_FORMAT = new ThreadLocal<DateFormat>() {        @Override        protected DateFormat initialValue() {            DateFormat df=new SimpleDateFormat("yyyyMMddHHmmss");            df.setLenient(false);            df.setTimeZone(TimeZone.getTimeZone("GMT"));            return df;        }            };        /**     * Get unix style date string.     */    public final static String getUnixDate(long millis) {        if (millis < 0) {            return "------------";        }        StringBuffer sb = new StringBuffer(16);        Calendar cal = new GregorianCalendar();        cal.setTimeInMillis(millis);        // month        sb.append(MONTHS[cal.get(Calendar.MONTH)]);        sb.append(' ');        // day        int day = cal.get(Calendar.DATE);        if (day < 10) {            sb.append(' ');        }        sb.append(day);        sb.append(' ');        long sixMonth = 15811200000L; // 183L * 24L * 60L * 60L * 1000L;        long nowTime = System.currentTimeMillis();        if (Math.abs(nowTime - millis) > sixMonth) {            // year            int year = cal.get(Calendar.YEAR);            sb.append(' ');            sb.append(year);        } else {            // hour            int hh = cal.get(Calendar.HOUR_OF_DAY);            if (hh < 10) {                sb.append('0');            }            sb.append(hh);            sb.append(':');            // minute            int mm = cal.get(Calendar.MINUTE);            if (mm < 10) {                sb.append('0');            }            sb.append(mm);        }        return sb.toString();    }    /**     * Get ISO 8601 timestamp.     */    public final static String getISO8601Date(long millis) {        StringBuffer sb = new StringBuffer(19);        Calendar cal = new GregorianCalendar();        cal.setTimeInMillis(millis);        // year        sb.append(cal.get(Calendar.YEAR));        // month        sb.append('-');        int month = cal.get(Calendar.MONTH) + 1;        if (month < 10) {            sb.append('0');        }        sb.append(month);        // date        sb.append('-');        int date = cal.get(Calendar.DATE);        if (date < 10) {            sb.append('0');        }        sb.append(date);        // hour        sb.append('T');        int hour = cal.get(Calendar.HOUR_OF_DAY);        if (hour < 10) {            sb.append('0');        }        sb.append(hour);        // minute        sb.append(':');        int min = cal.get(Calendar.MINUTE);        if (min < 10) {            sb.append('0');        }        sb.append(min);        // second        sb.append(':');        int sec = cal.get(Calendar.SECOND);        if (sec < 10) {            sb.append('0');        }        sb.append(sec);        return sb.toString();    }    /**     * Get FTP date.     */    public final static String getFtpDate(long millis) {        StringBuffer sb = new StringBuffer(20);                // MLST should use UTC        Calendar cal = new GregorianCalendar(TIME_ZONE_UTC);        cal.setTimeInMillis(millis);                // year        sb.append(cal.get(Calendar.YEAR));        // month        int month = cal.get(Calendar.MONTH) + 1;        if (month < 10) {            sb.append('0');        }        sb.append(month);        // date        int date = cal.get(Calendar.DATE);        if (date < 10) {            sb.append('0');        }        sb.append(date);        // hour        int hour = cal.get(Calendar.HOUR_OF_DAY);        if (hour < 10) {            sb.append('0');        }        sb.append(hour);        // minute        int min = cal.get(Calendar.MINUTE);        if (min < 10) {            sb.append('0');        }        sb.append(min);        // second        int sec = cal.get(Calendar.SECOND);        if (sec < 10) {            sb.append('0');        }        sb.append(sec);        // millisecond        sb.append('.');        int milli = cal.get(Calendar.MILLISECOND);        if (milli < 100) {            sb.append('0');        }        if (milli < 10) {            sb.append('0');        }        sb.append(milli);        return sb.toString();    }    /*     *  Parses a date in the format used by the FTP commands      *  involving dates(MFMT, MDTM)     */    public final static Date parseFTPDate(String dateStr) throws ParseException{        return FTP_DATE_FORMAT.get().parse(dateStr);            }    }

原创粉丝点击