时 间 记 忆
<<  < 2018 - >  >>
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

最 新 评 论

最 新 日 志

最 新 留 言

搜 索

用 户 登 录

我 的 相 册

我 的 圈 子

我 的 好 友

友 情 连 接


 
 
 
日期格式化工具
[ 2017-5-22 9:20:00 | By: 我家超超会发光 ]
 
/*
 * Created on 2004-9-30
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package com.hljw.util;

import java.text.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.text.SimpleDateFormat;

/**
 * <p>
 * Title:
 * </p>
 * <p>
 * De***ion:
 * </p>
 * <p>
 * Copyright: Copyright (c) 2003
 * </p>
 * <p>
 * Company:
 * </p>
 *
 * @author not attributable
 * @version 1.0
 */

public class UncDate {

    public static String nowDate() {
        return formatDateTime(new Date(), "yyyyMMdd");
    }
    
    public static String shortDate(Date date) {
        return formatDateTime(date, "yyyy-MM-dd");
    }

    public static String shortDate(String date) {
        return formatDateTime(parseDate(date), "yyyy-MM-dd");
    }

    public static String shortMonth(String date) {
        return formatDateTime(parseDate(date), "M-dd");
    }

    public static String shortDateYmd(Date date) {
        return formatDateTime(date, "yyyy年MM月dd日");
    }

    public static String shortTime(Date dateTime) {
        return shortDate(dateTime);
    }

    public static String middleTime(Date dateTime) {
        return formatDateTime(dateTime, "yyyy-MM-dd HH:mm");
    }
    
    public static String middleTime(long dateTime) {
        return formatDateTime(new Date(dateTime), "yyyy-MM-dd HH:mm");
    }

    public static String longTime(Date dateTime) {
        return formatDateTime(dateTime, "yyyy-MM-dd HH:mm:ss");
    }

    public static String time(Date date) {
        return formatDateTime(date, "HH:mm:ss");
    }

    public static String time(String date) {
        return formatDateTime(parseDate(date), "HH:mm:ss");
    }

    public static String formatDateTime(Date dateTime, String pattern) {
        if (dateTime == null)
            return null;

        if (pattern == null || pattern.equals("")) {
            // Default
            pattern = "yyyy-MM-dd HH:mm:ss";
        }
        SimpleDateFormat dateFmt = new SimpleDateFormat(pattern);
        return dateFmt.format(dateTime);
    }

    /**
     * 将含有日期的字符串转化为Date型。
     *
     * @param dateString
     *            含有日期的字符串。格式为:yyyy-MM-dd
     * @return
     */
    public static Date parseDate(String dateString) {
        return parseDate(dateString, '-');
    }

    /**
     * 将含有日期的字符串转化为Date型。
     *
     * @param dateString
     *            含有日期的字符串。使用separator作为分隔符。
     * @param separator
     *            年月日间分隔符
     * @return
     */

    public static Date parseDate(String dateString, char separator) {
        Date date = null;

        if (dateString == null || dateString.length() == 0)
            return null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy" + separator + "MM" + separator + "dd");
        try {
            date = sdf.parse(dateString);
        } catch (ParseException ex) {

        } finally {

        }
        return date;
    }

    /**
     * 将含有日期时间的字符串转化为Timestamp型。
     *
     * @param timeString
     *            含有日期时间的字符串。格式为:yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static Date parseTimestamp(String timeString) {
        Date time = null;
        String format1 = "yyyy-MM-dd HH:mm:ss";
        String format2 = "yyyy-MM-dd HH:mm";
        String format3 = "yyyy-MM-dd";

        try {
            time = parseFormattedTimestamp(timeString, format1);
        } catch (ParseException ex) {
            try {
                time = parseFormattedTimestamp(timeString, format2);
            } catch (ParseException ex2) {
                try {
                    time = parseFormattedTimestamp(timeString, format3);
                } catch (ParseException ex3) {
                    //
                }

            }
        }

        return time;
    }

    /**
     * 截掉日期的小时分秒部分
     *
     * @param dateTime
     */
    public static void trim(Calendar dateTime) {
        dateTime.set(Calendar.HOUR_OF_DAY, 0);
        dateTime.set(Calendar.MINUTE, 0);
        dateTime.set(Calendar.SECOND, 0);
        dateTime.set(Calendar.MILLISECOND, 0);
    }

    /**
     * 设置日期
     *
     * @param dateTime
     *            需要设置的日期类
     * @param year
     *            年份(四位的实际年份)
     * @param month
     *            月份(1-12)
     * @param date
     *            日期
     */
    public static void setDate(Calendar dateTime, int year, int month, int date) {
        dateTime.set(Calendar.YEAR, year);
        dateTime.set(Calendar.MONTH, month - 1);
        dateTime.set(Calendar.DAY_OF_MONTH, date);
    }

    /**
     * 设置日期
     *
     * @param dateTime
     *            需要设置的日期类
     * @param year
     *            年份(四位的实际年份)
     * @param month
     *            月份(1-12)
     * @param date
     *            日期
     * @deprecated JDK1.2 不推荐使用Date类进行日期的设定。请使用java.util.Calendar。
     */
    public static void setDate(Date dateTime, int year, int month, int date) {
        dateTime.setYear(year - 1900);
        dateTime.setMonth(month - 1);
        dateTime.setDate(date);
    }

    /**
     * 设置时间
     *
     * @param dateTime
     *            需要设置的日期类
     * @param hour
     *            小时(0-23)
     * @param minute
     *            分(0-59)
     * @param second
     *            秒(0-59)
     * @param millisecond
     *            毫秒(0-999)
     */
    public static void setTime(Calendar dateTime, int hour, int minute, int second, int millisecond) {
        dateTime.set(Calendar.HOUR_OF_DAY, hour);
        dateTime.set(Calendar.MINUTE, minute);
        dateTime.set(Calendar.SECOND, second);
        dateTime.set(Calendar.MILLISECOND, millisecond);
    }

    /**
     * 设置时间
     *
     * @param dateTime
     *            需要设置的日期类
     * @param hour
     *            小时(0-23)
     * @param minute
     *            分(0-59)
     * @param second
     *            秒(0-59)
     */
    public static void setTime(Calendar dateTime, int hour, int minute, int second) {
        setTime(dateTime, hour, minute, second, 0);
    }

    /**
     * 设置时间
     *
     * @param dateTime
     *            需要设置的日期类
     * @param hour
     *            小时(0-23)
     * @param minute
     *            分(0-59)
     * @param second
     *            秒(0-59)
     * @deprecated JDK1.2 不推荐使用Date类进行日期的设定。请使用java.util.Calendar。
     */
    public static void setTime(Date dateTime, int hour, int minute, int second) {
        dateTime.setHours(hour);
        dateTime.setMinutes(minute);
        dateTime.setSeconds(second);
    }

    private static Date parseFormattedTimestamp(String timeString, String format) throws ParseException {
        Date date = null;

        if (timeString == null)
            return null;
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.parse(timeString);
    }

    /**
     * 获得没有中划线的时间 - 上传文件生成 文件夹名
     *
     * @return
     */
    public static String getNoThroughDate() {
        return UncDate.shortDate(new Date()).replaceAll("-", "");
    }

    /**
     * 添加排定日期的指定段的数字,如:增加年、月、日、小时、分钟等段的数字
     *
     * @param date
     *            要增加指定数据的日期
     * @param field
     *            参数参考Calendar
     * @see Calendar
     * @param addnum
     *            增加数
     * @return
     */
    public static Date addDateField(Date date, int field, int addnum) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(field, addnum);
        return cal.getTime();
    }

    /**
     * 根据要添加的
     *
     * @param date
     *            要增加指定数据的日期
     * @param field
     *            参数参考Calendar
     * @see Calendar
     * @param addnum
     *            增加数
     * @return
     */
    public static Date addDateField(int field, int addnum) {
        Calendar cal = Calendar.getInstance();
        cal.add(field, addnum);
        return cal.getTime();
    }

    /**
     * 根据出生日期计算年龄
     *
     * @param birthDay
     * @return 未来日期返回0
     * @throws Exception
     */
    public static int getAge(Date birthDay) throws Exception {
        Calendar cal = Calendar.getInstance();
        if (cal.before(birthDay)) {
            return 0;
        }
        int yearNow = cal.get(Calendar.YEAR);
        int monthNow = cal.get(Calendar.MONTH);
        int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
        cal.setTime(birthDay);
        int yearBirth = cal.get(Calendar.YEAR);
        int monthBirth = cal.get(Calendar.MONTH);
        int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
        int age = yearNow - yearBirth;
        if (monthNow <= monthBirth) {
            if (monthNow == monthBirth) {
                if (dayOfMonthNow < dayOfMonthBirth) {
                    age--;
                }
            } else {
                age--;
            }
        }
        return age < 0 ? 0 : age;
    }

    /**
     * 根据出生日期计算年龄
     *
     * @param strBirthDay
     *            字符串型日期
     * @param format
     *            日期格式
     * @return 未来日期返回0
     * @throws Exception
     */
    public static int getAge(String strBirthDay, String format) throws Exception {
        DateFormat df = new SimpleDateFormat(format);
        Date birthDay = df.parse(strBirthDay);
        return getAge(birthDay);
    }
    
    public static Date getDate(String strDay, String format) throws Exception {
        DateFormat df = new SimpleDateFormat(format);
        return df.parse(strDay);
    }

    /**
     * 根据年龄计算出生日期
     *
     * @param age
     * @return
     * @throws Exception
     */
    public static Date getBirthday(int age) throws Exception {
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR) - age;
        int month = cal.get(Calendar.MONTH) + 1;
        int day = cal.get(Calendar.DAY_OF_MONTH);
        return UncDate.parseDate(year + "-" + month + "-" + day);
    }

    /**
     * 根据日期获得星期
     *
     * @param date
     * @return
     */
    public static String getWeekOfDate(Date date) {
        String[] weekDaysName = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
        String[] weekDaysCode = { "0", "1", "2", "3", "4", "5", "6" };
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int intWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        return weekDaysName[intWeek];
    }

    public static int getDateDay(Date sDate, Date eDate) {
        try {
            SimpleDateFormat dateFmt = new SimpleDateFormat("yyyy-MM-dd");
            Date sate = dateFmt.parse(shortDate(sDate));
            Date eate = dateFmt.parse(shortDate(eDate));
            return getDateCount(sate, eate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;
    }
    
    /**
     * 计算两个日志之间相隔天数
     *
     * @param sDate
     *            开始日期
     * @param eDate
     *            结束日期
     * @return
     */
    public static int getDateCount(Date sDate, Date eDate) {
        Calendar c = Calendar.getInstance();
        c.setTime(sDate);
        long ls = c.getTimeInMillis();
        c.setTime(eDate);
        long le = c.getTimeInMillis();
        int getCnt = (int) ((le - ls) / (24 * 3600 * 1000));
        return getCnt;
    }

    /**
     * 根据配置查询时间段
     *
     * @param value
     * @return
     */
    public static List<Date> getSelectDateByConfig(String value) {
        List<Date> listDate = new ArrayList<Date>();
        Calendar cle = Calendar.getInstance();
        if (UtilAPI.isNull(value) || "0".equals(value)) {
            listDate.add(null);
            listDate.add(null);
        }
        // 当天
        else if ("1".equals(value)) {
            cle.add(Calendar.DATE, -1);
            listDate.add(cle.getTime());
            listDate.add(new Date());
        }
        // 3天
        else if ("2".equals(value)) {
            cle.add(Calendar.DATE, -3);
            listDate.add(cle.getTime());
            listDate.add(new Date());
        }
        // 5天
        else if ("3".equals(value)) {
            cle.add(Calendar.DATE, -5);
            listDate.add(cle.getTime());
            listDate.add(new Date());
        }
        // 一周
        else if ("4".equals(value)) {
            cle.add(Calendar.DATE, -7);
            listDate.add(cle.getTime());
            listDate.add(new Date());
        }
        // 半个月
        else if ("5".equals(value)) {
            cle.add(Calendar.DATE, -15);
            listDate.add(cle.getTime());
            listDate.add(new Date());
        }
        // 一个月
        else if ("6".equals(value)) {
            cle.add(Calendar.MONTH, -1);
            listDate.add(cle.getTime());
            listDate.add(new Date());
        }
        // 三个月
        else if ("7".equals(value)) {
            cle.add(Calendar.MONTH, -3);
            listDate.add(cle.getTime());
            listDate.add(new Date());
        }
        // 半年
        else if ("8".equals(value)) {
            cle.add(Calendar.MONTH, -6);
            listDate.add(cle.getTime());
            listDate.add(new Date());
        }
        // 一年
        else if ("9".equals(value)) {
            cle.add(Calendar.YEAR, -1);
            listDate.add(cle.getTime());
            listDate.add(new Date());
        }
        return listDate;
    }
}

 
 
  • 标签:日期 格式化工具 
  • 发表评论:
     
    天涯博客 天涯博客
    天涯博客欢迎您!