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")); } }