uitl之java Date/SimpleDateFormat/Calendar日期操作工具

package com;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class DateUtil {
    // private Logger log = Logger.getLogger(DateUtil.class);
    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    private static SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");

    /**
     * 获取年的第几天,getDAY_OF_YEAR
     */
    public static int getDAY_OF_YEAR(String rq) throws Exception {
        int num = 0;
        Calendar c = Calendar.getInstance();
        c.setTime(sdf.parse(rq));
        num = c.get(Calendar.DAY_OF_YEAR);
        return num;
    }

    /**
     * 获取月的第几天,getDAY_OF_MONTH
     */
    public static int getDAY_OF_MONTH(String rq) throws Exception {
        int num = 0;
        Calendar c = Calendar.getInstance();
        c.setTime(sdf.parse(rq));
        num = c.get(Calendar.DAY_OF_MONTH);
        return num;
    }

    /**
     * 字符串的日期加上一天,在返回字符串
     */
    public static String addOneDay(String countdate) throws Exception {
        Calendar c = Calendar.getInstance();
        c.setTime(sdf.parse(countdate));
        c.add(Calendar.DATE, 1);
        String rtn = sdf.format(c.getTime());
        return rtn;
    }

    /**
     * 字符串的日期减去一天,在返回字符串
     */
    public static String subOneDay(String countdate) throws Exception {
        Calendar c = Calendar.getInstance();
        c.setTime(sdf.parse(countdate));
        c.add(Calendar.DATE, -1);
        String rtn = sdf.format(c.getTime());
        return rtn;
    }

    /**
     * @param rq
     *            字符串的日期 格式 yyyy-MM-dd
     * @param num
     * @return 添加或减去它的天数,在返回字符串
     * @throws Exception
     *             String
     * 
     */
    public static String addOrSubRq(String rq, int num) throws Exception {
        Calendar c = Calendar.getInstance();
        c.setTime(sdf.parse(rq));
        c.add(Calendar.DATE, num);
        String rtn = sdf.format(c.getTime());
        return rtn;
    }

    /**
     * @param tjrq
     * @return yyyy-MM-dd 格式化为 yyyyMMdd
     */
    public static String formatDateForyyyyMMdd(String tjrq) throws Exception {
        Date date = sdf.parse(tjrq);
        tjrq = new SimpleDateFormat("yyyyMMdd").format(date);
        return tjrq;
    }

    /**
     * @param tjrq
     * @return yyyy-MM-dd 格式化为 yyyy
     */
    public static String formatDateForYYYY(String tjrq) throws Exception {
        Date date = sdfYear.parse(tjrq);
        tjrq = new SimpleDateFormat("yyyy").format(date);
        return tjrq;
    }

    /**
     * @param tjrq
     * @return yyyy-MM-dd 格式化为 yyyyMM
     */
    public static String formatDateForyyyyMM(String tjrq) throws Exception {
        Date date = sdf.parse(tjrq);
        tjrq = new SimpleDateFormat("yyyyMM").format(date);
        return tjrq;
    }

    /**
     * @param tjrq
     * @return 将字符串日期减去一年
     * @throws Exception
     *             String
     * 
     */
    public static String subOneYearForDate(String tjrq) throws Exception {
        Date date = sdf.parse(tjrq);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.YEAR, -1);
        tjrq = sdf.format(calendar.getTime());

        return tjrq;
    }

    /**
     * @param tjrq
     * @return 将字符串日期减去一个月
     * @throws Exception
     *             String
     * 
     */
    public static String subOneMonthForDate(String tjrq) throws Exception {
        Date date = sdf.parse(tjrq);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, -1);
        tjrq = sdf.format(calendar.getTime());
        return tjrq;
    }

    /**
     * @param tjrq
     *            参数格式为yyyy-MM-dd
     * @param type
     *            参数 只能为month 或year
     * @throws Exception
     *             循环遍历,当月或当年日期,并返回list集合
     * 
     */
    public static List<String> traversalMonthOrYear(String tjrq, String type) throws Exception {
        List<String> list = new ArrayList<String>();
        Calendar c = Calendar.getInstance();
        int dayNum = 0;
        if ("month".equals(type)) {
            dayNum = DateUtil.getDAY_OF_MONTH(sdf.format(c.getTime()));
        } else if ("year".equals(type)) {
            dayNum = DateUtil.getDAY_OF_YEAR(sdf.format(c.getTime()));
        }
        for (int i = 1; i < dayNum; i++) {
            c.add(Calendar.DATE, -1);
            list.add(sdf.format(c.getTime()));
        }
        return list;

    }

    /**
     * @param args
     * @throws Exception
     *             void
     * 
     */
    public static void main(String[] args) throws Exception {

        // traversalMonthOrYear("2020-03-08","month");

        System.out.println(traversalMonthOrYear("2020-03-08", "year"));

        // System.out.println(getDAY_OF_MONTH("2020-03-08"));
        // System.out.println(getDAY_OF_YEAR("2020-03-08"));
        // System.out.println(getDAY_OF_YEAR("2019-12-25"));

    }
}

 

posted @ 2018-09-10 17:22  爱跳舞的程序员  阅读(169)  评论(0编辑  收藏  举报