【JAVA】日期格式控制类

package com.util.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class DateUtil {
    private static final String[] CHINA_WEEKDAY = {"周日", "周一", "周二", "周三",
            "周四", "周五", "周六"};
    private static final String CHINA_YYYY_MM_DD = "yyyy年MM月dd日";
    private static final String MM_DD_SPLASH = "MM/dd";
    private static final int START_YEAR = 1900;
    private static final String YYYY_MM_DD = "yyyy-MM-dd";
    private static final String YYYY_MM_DD_SPLASH = "yyyy/MM/dd";
    private static final String HH_MM_SS = "hh:mm:ss";
    /**
     * @param time
     *            hh:mm
     * @return hh时mm分
     */
    public static String changeHHMMtoChinaHHMM(String time) {
        int colonIndex = time.indexOf(":");
        String hour = time.substring(0, colonIndex);
        String minus = time.substring(colonIndex + 1, time.length());
        return hour + "时" + minus + "分";
    }
    /**
     * 将YYYY-MM-DD 转化为 YYYY年MM月DD日
     * 
     * @param yyyymmdd
     *            YYYY-MM-DD
     * @return 可能返回为空
     */
    public static String changeYYYYMMDDToChinaYYYYMMDD(String yyyymmdd) {
        try {
            return formatDateToChinaYYYYMMDD(formatYYYYMMDDToDate(yyyymmdd));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 格式化为Date型
     * 
     * @param date
     *            YYYY年MM月DD日
     */
    public static Date formatChinaYYYYMMDDToDate(String date)
            throws ParseException {
        return new SimpleDateFormat(CHINA_YYYY_MM_DD, Locale.CHINA).parse(date);
    }
    /**
     * 格式化为"XXXX年XX月XX日"
     */
    public static String formatDateToChinaYYYYMMDD(Date date) {
        return getYear(date) + "年" + (date.getMonth() + 1) + "月"
                + date.getDate() + "日";
    }
    /**
     * 格式化为"XX月XX日"
     */
    public static String formatDateToMMDD(Date date) {
        return (date.getMonth() + 1) + "月" + date.getDate() + "日";
    }
    /**
     * 格式化为"mm/dd"
     */
    public static String formatDateToMMDDSplash(Date date) {
        return new SimpleDateFormat(MM_DD_SPLASH, Locale.CHINA).format(date);
    }
    /**
     * 格式化为"yyyy-mm-dd"
     */
    public static String formatDateToYYYYMMDD(Date date) {
        return new SimpleDateFormat(YYYY_MM_DD, Locale.CHINA).format(date);
    }
    /**
     * 格式化为"yyyy/mm/dd"
     */
    public static String formatDateToYYYYMMDDSplash(Date date) {
        return new SimpleDateFormat(YYYY_MM_DD_SPLASH, Locale.CHINA)
                .format(date);
    }
    /**
     * 格式化为Date型
     * 
     * @param date
     *            YYYY-MM-DD
     */
    public static Date formatYYYYMMDDToDate(String date) throws ParseException {
        return new SimpleDateFormat(YYYY_MM_DD, Locale.CHINA).parse(date);
    }
    /**
     * 将YYYY-MM-DD 格式化为"XX月XX日"
     * 
     * @param date
     * @return 可能返回为空
     */
    public static String formatYYYYMMDDToMMDD(String date) {
        try {
            return formatDateToMMDD(formatYYYYMMDDToDate(date));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 获取周几
     * 
     * @param date
     * @return 返回值为:未知,周一,周二,周三,周四,周五,周六,周日
     */
    public static String getChinaWeekDay(Date date) {
        int weekday = getWeekDay(date);
        return CHINA_WEEKDAY[weekday];
    }
    /**
     * 获取周几
     * 
     * @param date
     * @return 返回值为:未知,周一,周二,周三,周四,周五,周六,周日
     */
    public static String getChinaWeekDay(String date) {
        int weekday = getWeekDay(date);
        return CHINA_WEEKDAY[weekday];
    }
    /**
     * 获取年份
     * 
     * @param date
     *            yyyy-mm-dd
     * @return 返回值为:XXXX年
     */
    public static String getChinaYear(String date) {
        return getYear(date) + "年";
    }
    /**
     * 获得指定日期的间隔后的日期
     * 
     * @param date
     * @param days
     *            间隔天数。 >0,表示后面的日期 <0,表示前面的日期
     */
    public static Date getDayAfter(Date date, int days) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        int day = c.get(Calendar.DATE);
        c.set(Calendar.DATE, day + days);
        return c.getTime();
    }
    /**
     * 获得指定日期的间隔后的日期
     * 
     * @param date
     *            yyyy-mm-dd
     * @param days
     *            间隔天数。 >0,表示后面的日期 <0,表示前面的日期
     */
    public static Date getDayAfter(String date, int days) {
        try {
            return getDayAfter(formatYYYYMMDDToDate(date), days);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 获取两个日期之间的天数
     * 
     * @param startDate
     *            yyyy-mm-dd
     * @param endDate
     *            yyyy-mm-dd
     * @return
     */
    public static int getDaysBetween(String startDate, String endDate) {
        int len = 0;
        try {
            SimpleDateFormat df = new SimpleDateFormat(YYYY_MM_DD, Locale.CHINA);
            java.util.Date cDate;
            cDate = df.parse(startDate);
            java.util.Date dDate = df.parse(endDate);
            long betweenDate = (dDate.getTime() - cDate.getTime())
                    / (24 * 60 * 60 * 1000);
            len = (int) betweenDate;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return len;
    }
    /**
     * 获取星期几
     * 
     * @param date
     *            yyyy-mm-dd
     * @return 返回值为:1,2,3,4,5,6,7. 出错返回0
     */
    public static int getWeekDay(Date date) {
        return date.getDay() /* + 1 */;
    }
    /**
     * 获取星期几
     * 
     * @param date
     *            yyyy-mm-dd
     * @return 返回值为:1,2,3,4,5,6,7. 出错返回0
     */
    public static int getWeekDay(String date) {
        try {
            return getWeekDay(formatYYYYMMDDToDate(date));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;
    }
    /**
     * 获取年份
     * 
     * @param date
     * @return XXXX
     */
    public static int getYear(Date date) {
        return date.getYear() + START_YEAR;
    }
    /**
     * 获取年份
     * 
     * @param date
     *            yyyy-mm-dd
     * @return XXXX
     */
    public static int getYear(String date) {
        try {
            return getYear(formatYYYYMMDDToDate(date));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return START_YEAR;
    }
    public static String formatDateToYYYYMMDDHHMMSS(Date date) {
        return new SimpleDateFormat(YYYY_MM_DD + " " + HH_MM_SS, Locale.CHINA)
                .format(date);
    }
}


转载于:https://my.oschina.net/u/2273965/blog/368199

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值