package com.cinc.ecmp.utils; import java.sql.Timestamp; 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.Locale; import java.util.StringTokenizer; /** * * @author * */ public class DateUtil { private DateUtil() { } public static Timestamp getNowTimeStamp() { return new Timestamp(System.currentTimeMillis()); } /** * * @param endDate * ,被减数 * @param startDate * , 减数 计算两个日期之间的相隔天数 * @throws ParseException */ public static long dateCal(String endDate, String startDate) throws ParseException { String s1 = endDate.replace('-', '/'); String s2 = startDate.replace('-', '/'); long days = 0; Date dt1 = fomatStd().parse(s1); Date dt2 = fomatStd().parse(s2); days = (dt1.getTime() - dt2.getTime()) / 60 / 60 / 1000 / 24; return days; } /** * * @param time * ,时间 * @param parm * ,计算参数 * @param type * ,计算类型 * @return * @throws ParseException */ public static String calTime(String time, int parm, String type) throws ParseException { Date time1 = formatZkbcTimes().parse(time); Calendar rightNow = Calendar.getInstance(); rightNow.setTime(time1); if ("HH".equals(type)) { rightNow.add(Calendar.HOUR,parm); } else if ("mm".equals(type)){ rightNow.add(Calendar.MINUTE,parm); } else if ("ss".equals(type)){ rightNow.add(Calendar.SECOND,parm); } Date dt1=rightNow.getTime(); String lastTime = formatZkbcTimes().format(dt1); return lastTime; } /** * * @param dateTime * ,日期时间 * @param parm * ,计算参数 * @param type * ,计算类型 * @return * @throws ParseException */ public static String calDateTime(String dateTime, int parm, String type) throws ParseException { Date dateTime1 = formatDayTimeZkbc().parse(dateTime); Calendar rightNow = Calendar.getInstance(); rightNow.setTime(dateTime1); if ("yyyy".equals(type)){ rightNow.add(Calendar.YEAR,parm); } else if ("MM".equals(type)){ rightNow.add(Calendar.MONTH,parm); }else if ("dd".equals(type)){ rightNow.add(Calendar.DAY_OF_YEAR,parm); }else if ("HH".equals(type)){ rightNow.add(Calendar.HOUR,parm); }else if ("mm".equals(type)){ rightNow.add(Calendar.MINUTE,parm); }else if ("ss".equals(type)){ rightNow.add(Calendar.SECOND,parm); } Date dt1=rightNow.getTime(); String lastDateTime = formatDayTimeZkbc().format(dt1); return lastDateTime; } /** * * @param date * ,日期 * @param parm * ,计算参数 * @param type * ,计算类型 * @return * @throws ParseException */ public static String calDate(String date, int parm, String type) throws ParseException { Date date1 = fomatStd().parse(date); Calendar rightNow = Calendar.getInstance(); rightNow.setTime(date1); if ("yyyy".equals(type)){ rightNow.add(Calendar.YEAR,parm); }else if ("MM".equals(type)){ rightNow.add(Calendar.MONTH,parm); }else if ("dd".equals(type)){ rightNow.add(Calendar.DAY_OF_YEAR,parm); } Date dt1=rightNow.getTime(); String lastDate = fomatStd().format(dt1); return lastDate; } public static long timeCal(String endTime, String startTime) throws ParseException { String s1 = endTime.replaceAll("-", "").replaceAll(":", ""); String s2 = startTime.replaceAll("-", "").replaceAll(":", ""); long times = 0; Date dt1 = formatAll().parse(s1); Date dt2 = formatAll().parse(s2); times = (dt1.getTime() - dt2.getTime()) / 60 / 1000; return times; } /** * * @param date1 * ,被减数 * @param date2 * , 减数 比较两个日期的大小 * @throws ParseException */ public static int comparingTwoDates(String date1, String date2) throws ParseException { String s1 = date1.replace('-', '/'); String s2 = date2.replace('-', '/'); long days = 0; int result = 0; Date dt1 = fomatStd().parse(s1); Date dt2 = fomatStd().parse(s2); days = (dt1.getTime() - dt2.getTime()) / 60 / 60 / 1000 / 24; if (days == 0) { result = 0; } else if (days < 0) { result = -1; } else if (days > 0) { result = 1; } return result; } /** * * @param times1 * ,被减数 * @param times2 * , 减数 比较两个时间的大小 * @throws ParseException */ public static int comparingTwoTimes(String times1, String times2) { DateFormat df = new SimpleDateFormat("hh:mm:ss"); try { Date d1 = df.parse(times1); Date d2 = df.parse(times2); if (d1.getTime() > d2.getTime()) { return 1; } else if (d1.getTime() < d2.getTime()) { return -1; } else { return 0; } } catch (ParseException e) { e.printStackTrace(); } return 0; } /** * 时间比较 * * @param date1 * @param date2 * @return * @throws ParseException */ public static int comparingTwoTimes2(String date1, String date2) throws ParseException { long days = 0; int result = 0; Date dt1 = formatZkbcTimes().parse(date1); Date dt2 = formatZkbcTimes().parse(date2); days = (dt1.getTime() - dt2.getTime()); if (days == 0) { result = 0; } else if (days < 0) { result = -1; } else if (days > 0) { result = 1; } return result; } /** * 日期时间比较 * * @param date1 * @param date2 * @return * @throws ParseException */ public static int comparingTwoDateTimes(String date1, String date2) throws ParseException { String s1 = date1.replaceAll("-", "").replaceAll(":", "").replaceAll(" ", ""); String s2 = date2.replaceAll("-", "").replaceAll(":", "").replaceAll(" ", ""); long days = 0; int result = 0; Date dt1 = formatAll().parse(s1); Date dt2 = formatAll().parse(s2); days = (dt1.getTime() - dt2.getTime()); if (days == 0) { result = 0; } else if (days < 0) { result = -1; } else if (days > 0) { result = 1; } return result; } /** * @param date * @return */ public static String getTimeString(Date date) { return formatZkbcTimes().format(date); } /** * 获取月部分 * * @param date * @return */ public static int getMonth(String date) { Date d = DateUtil.getDateFromDbString(date); Calendar c = Calendar.getInstance(); c.setTime(d); return c.get(Calendar.MONTH) + 1; } /** * 获取月部分 * * @param date * @return */ public static int getMonth(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.MONTH) + 1; } /** * 获取年部分 * * @param date * @return */ public static int getYear(String date) { Date d = DateUtil.getDateFromDbString(date); Calendar c = Calendar.getInstance(); c.setTime(d); return c.get(Calendar.YEAR); } /** * 获取年部分 * * @param date * @return */ public static int getYear(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.YEAR); } /** * 获取日部分 * * @param date * @return */ public static int getDay(String date) { Date d = DateUtil.getDateFromDbString(date); Calendar c = Calendar.getInstance(); c.setTime(d); return c.get(Calendar.DAY_OF_MONTH); } /** * 获取日部分 * * @param date * @return */ public static int getEndDayInMonth(String date) { Date d = DateUtil.getDateFromDbString(date); Calendar c = Calendar.getInstance(); c.setTime(d); return c.getActualMaximum(Calendar.DAY_OF_MONTH); } /** * 返回当前时间 * * @return */ public static String getNowTimeString() { return getTimeString(new Date()); } public static int getQuaterMonth(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); int thisMonth = c.get(Calendar.MONTH); if (thisMonth < 3) { return 3; } if ((thisMonth > 3) && (thisMonth < 6)) { return 6; } if ((thisMonth > 6) && (thisMonth < 9)) { return 9; } if ((thisMonth > 9) && (thisMonth < 12)) { return 12; } return thisMonth; } public static int getHalfYearMonth(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); int thisMonth = c.get(Calendar.MONTH); if (thisMonth < 6) { return 6; } if ((thisMonth > 6) && (thisMonth < 12)) { return 12; } return thisMonth; } /** * 返回输入日期月的最后一天 * * @param inputDate * @return */ public static Date getLastDayInMonth(Date inputDate) { Calendar c = Calendar.getInstance(); c.setTime(inputDate); c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH)); return c.getTime(); } /** * 返回输入日期月份有多少天。 例如2月可能有28 * * @param inputDate * @return */ public static int getDayCountInOneMounth(Date inputDate) { Calendar c = Calendar.getInstance(); c.setTime(inputDate); return c.getActualMaximum(Calendar.DAY_OF_MONTH); } /** * 返回输入日期月份有多少天。 例如2月可能有28 * * @param inputDate * @return */ public static int getDayCountInOneMounth(String inputDate) { return getDayCountInOneMounth(DateUtil.getDateFromDbString(inputDate)); } /** * 指定一月的某一天,返回当天日。 * * @param input * @param dayCount * @return 日期型 */ public static Date getDateByDayCount(Date input, int dayCount) { Calendar c = Calendar.getInstance(); c.setTime(input); int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH); dayCount = dayCount > maxDay ? maxDay : dayCount; c.set(Calendar.DAY_OF_MONTH, dayCount); return c.getTime(); } /** * 取下个月的某天日期 * * @param lastMonthDay * @param dayCount * @return */ public static String getNextMonthDate(String lastMonthDay, int dayCount) { String nextMonthDate = getNextMonthEnd(lastMonthDay); nextMonthDate = getDateStringToDb(getDateByDayCount(nextMonthDate, dayCount)); return nextMonthDate; } /** * 指定一月的某一天,返回当天日。 * * @param input * @param dayCount * @return 日期型 */ public static Date getDateByDayCount(String input, int dayCount) { return getDateByDayCount(DateUtil.getDateFromDbString(input), dayCount); } /** * * @param date * @return 判断是否为月末 */ public static boolean isEndMonth(String date) { Date toDate = DateUtil.getDateFromDbString(date); Calendar c = Calendar.getInstance(); c.setTime(toDate); int monthEnd = c.getActualMaximum(Calendar.DAY_OF_MONTH); String monthEndStr = date.substring(8); if (monthEndStr.charAt(0) == '0') { monthEndStr = String.valueOf(monthEndStr.charAt(1)); } int trueMonthEnd = Integer.parseInt(monthEndStr); return trueMonthEnd == monthEnd; } /** * * @param date * @return 判断是否为年末 12-31号 */ public static boolean isEndYear(String date) { StringTokenizer str = new StringTokenizer(date, "-"); String year = str.nextToken(); String month = str.nextToken(); String day = str.nextToken(); Calendar dealDate = Calendar.getInstance(); dealDate.set(Calendar.YEAR, Integer.parseInt(year)); dealDate.set(Calendar.MONTH, Integer.parseInt(month) - 1); dealDate.set(Calendar.DAY_OF_MONTH, Integer.parseInt(day)); int monthNow = dealDate.get(Calendar.MONTH); dealDate.set(Calendar.DAY_OF_YEAR, dealDate.get(Calendar.DAY_OF_YEAR) + 1); int monthNext = dealDate.get(Calendar.MONTH); if (monthNow == 11 && monthNext == 0) { if (monthNext == 0) { return true; } } return false; } /** * * @param date * @return 判断是否为季末 */ public static boolean isEndQuarter(String date) { StringTokenizer str = new StringTokenizer(date, "-"); String year = str.nextToken(); String month = str.nextToken(); String day = str.nextToken(); Calendar dealDate = Calendar.getInstance(); dealDate.set(Calendar.YEAR, Integer.parseInt(year)); dealDate.set(Calendar.MONTH, Integer.parseInt(month) - 1); dealDate.set(Calendar.DAY_OF_MONTH, Integer.parseInt(day)); int monthEnd = dealDate.getActualMaximum(Calendar.DAY_OF_MONTH); int iMonth = Integer.parseInt(month); if (iMonth % 3 == 0 && monthEnd == Integer.parseInt(day)) { return true; } return false; } /** * 判断是否周末 * * @param date * @return */ public static boolean isEndWeek(String date) { Date bdate = getDateFromDbString(date); Calendar cal = Calendar.getInstance(); cal.setTime(bdate); if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { return true; } return false; } /** * 判断是否是周一 * * @param date * @return */ public static boolean isMonday(String date) { Date bdate = getDateFromDbString(date); Calendar cal = Calendar.getInstance(); cal.setTime(bdate); if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) { return true; } return false; } /** * * @param date * @return 将日期格式转换为String类型,并填充。例如:2009-5-5 ---> 2009-05-05 */ public static String getDateStringToDb(Date date) { return formatZkbc().format(date); } public static String getDateTimeStringToDb(Date date) { return formatDayTimeZkbc().format(date); } /** * * @param date * @return 将日期格式转换为String类型,并填充。例如:2009-5-5 ---> 2009-05-05 */ public static String getTimeStringToDb(Date date) { return formatZkbcTimes().format(date); } /** * * @param date * @return 将日期格式转换为String类型,并填充。例如:2009-5-5 ---> 2009-05-05 */ public static String getDateTimeString(Date date) { return formatAll().format(date); } /** * 把数据库的字符串转化成Date型 * * @param dateString * 字符串格式(yyyy-MM-dd) * @return */ public static Date getDateFromDbString(String dateString) { try { return formatZkbc().parse(dateString); } catch (ParseException e) { e.printStackTrace(); throw new RuntimeException("string format error!! ,错误日期数据:" + dateString); } } /** * 把数据库的字符串转化成Date型 * * @param dateString * * @return */ public static Date getDateTimeFromDbString(String dateString) { try { return formatDayTimeZkbc().parse(dateString); } catch (ParseException e) { e.printStackTrace(); throw new RuntimeException("string format error!! ,错误日期数据:" + dateString); } } /** * 返回当期日期的字符串 * * @return */ public static String getNowDateString() { return getDateStringToDb(new Date()); } /** * 返回当期日期时间的字符串 * * @return */ public static String getNowDateTimeString() { return getDateTimeString(new Date()); } public static final Locale DEFAUTL_LOCALE = Locale.ENGLISH; public static SimpleDateFormat formatZkbcTimes() { return new SimpleDateFormat("HH:mm:ss", DEFAUTL_LOCALE); } public static SimpleDateFormat fomatStd() { return new SimpleDateFormat("yyyy/MM/dd", DEFAUTL_LOCALE); } public static SimpleDateFormat formatZkbc() { return new SimpleDateFormat("yyyy-MM-dd", DEFAUTL_LOCALE); } public static SimpleDateFormat formatDayTimeZkbc() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", DEFAUTL_LOCALE); } public static SimpleDateFormat formatAll() { return new SimpleDateFormat("yyyyMMddHHmmss", DEFAUTL_LOCALE); } /** * 是否同月年 * * @param date1 * @param date2 * @return */ public static boolean isYearAndMonthSame(String date1, String date2) { if (getMonth(date1) != getMonth(date2)) { return false; } if (getYear(date1) != getYear(date2)) { return false; } return true; } /** * 判断date1和date2是否年和月相同,如果相同就返回date2,否则返回date1 * * @param date1 * @param date2 * @return */ public static java.sql.Date isEqualsYM(java.sql.Date date1, java.sql.Date date2) { Calendar date1Temp = Calendar.getInstance(); Calendar date2Temp = Calendar.getInstance(); date1Temp.setTime(date1); date2Temp.setTime(date2); if ((date1Temp.get(Calendar.YEAR) == date2Temp.get(Calendar.YEAR)) && date1Temp.get(Calendar.MONTH) == date2Temp .get(Calendar.MONTH)) { date1 = date2; } return date1; } /** * 阶段描述 * * @author hb * */ public static class TermDes { public int termCount = 0; public int accualDayCount = 0; public java.util.Date billDay; public java.sql.Date someDebitDay; public boolean termPlusDay = false; } /** * 如果起息日是31,但是到了2月却只有28天,加频率加出来就有问题。 * * @param result * @param dueDay * @return */ public static Calendar adjustByDueDay(Calendar result, int dueDay) { if (dueDay > 28) { int curDueDay = result.get(Calendar.DAY_OF_MONTH); if (curDueDay != dueDay) { int max = result.getActualMaximum(Calendar.DAY_OF_MONTH); curDueDay = dueDay; if (max < dueDay) { curDueDay = max; } result.set(Calendar.DAY_OF_MONTH, curDueDay); } } return result; } /** * 如果起息日是31,但是到了2月却只有28天,加频率加出来就有问题。 * * @param result * @param dueDay * @return */ public static Date adjustByDueDay(Date result, int dueDay) { Calendar newResult = Calendar.getInstance(); newResult.setTime(result); return adjustByDueDay(newResult, dueDay).getTime(); } /** * 是否月初 * * @param date * @return */ public static boolean isFirstMonth(String date) { return Integer.parseInt(date.split("-")[2]) == 1; } /** * 获取月末日期 * * @param date * @return */ public static String getEndMonth(String date) { StringTokenizer str = new StringTokenizer(date, "-"); int year = Integer.parseInt(str.nextToken()); int month = Integer.parseInt(str.nextToken()); Calendar cal = Calendar.getInstance(); // 年 cal.set(Calendar.YEAR, year); // 月,因为Calendar里的月是从0开始,所以要减1 cal.set(Calendar.MONTH, month - 1); // 日,设为一号 cal.set(Calendar.DATE, 1); // 月份加一,得到下个月的一号 cal.add(Calendar.MONTH, 1); // 下一个月减一为本月最后一天 cal.add(Calendar.DATE, -1); return formatZkbc().format(cal.getTime()); } /** * 获取月初日期 * * @param date * @return */ public static String getBeginMonth(String date) { Calendar cal = getCalendarObject(date); // 日,设为一号 cal.set(Calendar.DATE, 1); return formatZkbc().format(cal.getTime()); } /** * 获取每月21日 * * @param date * @return */ public static String getDay21(String date) { Calendar cal = getCalendarObject(date); // 日,设为一号 cal.set(Calendar.DATE, 21); return formatZkbc().format(cal.getTime()); } /** * 获取上月21日 * * @param date * @return */ public static String getLastDay21(String date) { Calendar cal = getCalendarObject(date); // 月份减一,得到上个月的一号 cal.add(Calendar.MONTH, -1); // 日,设为一号 cal.set(Calendar.DATE, 21); return formatZkbc().format(cal.getTime()); } /** * 获取当前日期的Calendar对象 * * @param date * @return */ public static Calendar getCalendarObject(String date) { StringTokenizer str = new StringTokenizer(date, "-"); int year = Integer.parseInt(str.nextToken()); int month = Integer.parseInt(str.nextToken()); int day = Integer.parseInt(str.nextToken()); Calendar cal = Calendar.getInstance(); // 年 cal.set(Calendar.YEAR, year); // 月,因为Calendar里的月是从0开始,所以要减1 cal.set(Calendar.MONTH, month - 1); // 日,设为一号 cal.set(Calendar.DATE, day); return cal; } /** * 获取上月月初日期 * * @param date * @return */ public static String getLastBeginMonth(String date) { Calendar cal = getCalendarObject(date); // 月份减一,得到上个月的一号 cal.add(Calendar.MONTH, -1); // 日,设为一号 cal.set(Calendar.DATE, 1); return formatZkbc().format(cal.getTime()); } /** * 获取下月月初日期 * * @param date * @return */ public static String getNextMonthEnd(String date) { Calendar cal = getCalendarObject(date); // 月份加一,得到下个月的一号 cal.add(Calendar.MONTH, 1); // 日,设为一号 cal.set(Calendar.DATE, 1); return formatZkbc().format(cal.getTime()); } /** * 获取下月月末日期 * * @param date * @return */ public static String getNextMonthLast(String date) { date = getNextMonthEnd(date); date = getEndMonth(date); return date; } /** * 获取两个日期之间的月数 * * @param frmDate * @param endDate * @return */ public static int getMonthCountBetweenDate(String frmDate, String endDate) { Calendar cStart = Calendar.getInstance(); Calendar cEnd = Calendar.getInstance(); cStart.setTime(DateUtil.getDateFromDbString(frmDate)); cEnd.setTime(DateUtil.getDateFromDbString(endDate)); int sYear = cStart.get(Calendar.YEAR); int eYear = cEnd.get(Calendar.YEAR); int sMonth = cStart.get(Calendar.MONTH); int eMonth = cEnd.get(Calendar.MONTH); int sDate = cStart.get(Calendar.DATE); int eDate = cEnd.get(Calendar.DATE); int addMonth = 0; if (eDate > sDate) { addMonth = 1; } return (eYear - sYear) * 12 + (eMonth - sMonth) + addMonth; } /** * 获取两个日期之间的季数 * * @param frmDate * @param endDate * @return */ public static int getQuaterCountBetweenDate(String frmDate, String endDate) { int months = getMonthCountBetweenDate(frmDate, endDate); int i = months / 3; int j = months % 3; if (j != 0) { i++; } return i; } /** * 当前业务日期+/-count年 * * @param date * @param count * @return */ public static String getDateOfCountYear(String date, int count) { Calendar cal = getCalendarObject(date); cal.add(Calendar.YEAR, count); return formatZkbc().format(cal.getTime()); } /** * 当前业务日期+/-count月 * * @param date * @param count * @return */ public static String getDateOfCountMonth(String date, int count) { Calendar cal = getCalendarObject(date); cal.add(Calendar.MONTH, count); return formatZkbc().format(cal.getTime()); } /** * 返回。输入日期+dayCount 输入负数,就是减少天数 * * @param inputDate * @return */ public static String getDateIncDayCount(String inputDate, int dayCount) { Date d = DateUtil.getDateFromDbString(inputDate); Calendar c = Calendar.getInstance(); c.setTime(d); c.add(Calendar.DAY_OF_YEAR, dayCount); return DateUtil.getDateStringToDb(c.getTime()); } /** * 返回。输入日期+dayCount 输入负数,就是减少天数 * * @param inputDate * @return */ public static String getTimeIncDayCount(String inputDate, int dayCount) { Date d = DateUtil.getDateTimeFromDbString(inputDate); Calendar c = Calendar.getInstance(); c.setTime(d); c.add(Calendar.HOUR_OF_DAY, dayCount); return DateUtil.getDateTimeStringToDb(c.getTime()); } public static String getMinIncDayCount(String inputDate, int dayCount) { Date d = DateUtil.getDateTimeFromDbString(inputDate); Calendar c = Calendar.getInstance(); c.setTime(d); c.add(Calendar.MINUTE, dayCount); return DateUtil.getDateTimeStringToDb(c.getTime()); } /** * 取下一年的1月1日 * * @param date * @return */ public static String getNextYearBegin(String date) { Calendar cal = getCalendarObject(date); cal.add(Calendar.YEAR, 1); cal.set(Calendar.MONTH, 0); // 日,设为一号 cal.set(Calendar.DATE, 1); return formatZkbc().format(cal.getTime()); } /** * 按季调整利率,取每季初的:4月1 ,7月1, 10月1, 1月1 * * @param date * @return */ public static String getRepcDate(String date) { StringTokenizer str = new StringTokenizer(date, "-"); int year = Integer.parseInt(str.nextToken()); int month = Integer.parseInt(str.nextToken()); int newMonth = 0; if (month >= 1 && month <= 3){ newMonth = 4; } if (month >= 4 && month <= 6){ newMonth = 7; } if (month >= 7 && month <= 9){ newMonth = 10; } if (month >= 10 && month <= 12) { year = year + 1; newMonth = 1; } Calendar cal = Calendar.getInstance(); // 年 cal.set(Calendar.YEAR, year); // 月,因为Calendar里的月是从0开始,所以要减1 cal.set(Calendar.MONTH, newMonth - 1); // 日,设为一号 cal.set(Calendar.DATE, 1); return formatZkbc().format(cal.getTime()); } /** * 按季计息,取下一个季度的21日,如3月21,6月21,9月21,12月21,如果参数进来恰好是计息日,则往后取最近下一个季度的21日,如3月21日 * , 就返回6月21日 add by liaozy 2014.2.12 * * @param date * @return */ public static String getQuaterDay21(String date) { StringTokenizer str = new StringTokenizer(date, "-"); int year = Integer.parseInt(str.nextToken()); int month = Integer.parseInt(str.nextToken()); int day = Integer.parseInt(str.nextToken()); int newMonth = 0; if (month == 12 && day >= 21) { year = year + 1; } // 1-3月 12月21-3.20取3.21 if (month >= 1 && month <= 2) { newMonth = 3; } if (month == 3 && day < 21) { newMonth = 3; } if (month == 12 && day >= 21) { newMonth = 3; } if (month == 3 && day >= 21) { newMonth = 6; } // 4-6月 4.1-4.20取4.21 if (month >= 4 && month <= 5) { newMonth = 6; } if (month == 6 && day < 21) { newMonth = 6; } if (month == 6 && day >= 21) { newMonth = 9; } // 7-9月 7.1-9.20取9.21 if (month >= 7 && month <= 8) { newMonth = 9; } if (month == 9 && day < 21) { newMonth = 9; } if (month == 9 && day >= 21) { newMonth = 12; } // 10-12月 10.1-12.20返回12.21 if (month >= 10 && month <= 11) { newMonth = 12; } if (month == 12 && day < 21) { newMonth = 12; } Calendar cal = Calendar.getInstance(); // 年 cal.set(Calendar.YEAR, year); // 月,因为Calendar里的月是从0开始,所以要减1 cal.set(Calendar.MONTH, newMonth - 1); // 日,设为21号 cal.set(Calendar.DATE, 21); return formatZkbc().format(cal.getTime()); } /** * 8位转10位 格式为2013-11-25 * * @param date * @return */ public static String formatDateH(String date) { return DateUtil.getDateStringToDb(DateUtil.getDateFromDbString(date)); } /** * 将日期转换为中文 * * @param date * @return */ public static String toChineseDate(String date) { if (date == null || "".equals(date)){ return ""; } String[] str = date.split("-"); if (date.replace("-", "").length() != 8){ return ""; } String sReturn = ""; sReturn = str[0] + "年"; sReturn += str[1] + "月"; sReturn += str[2] + "日"; return sReturn; } public static SimpleDateFormat coreFnt() { return new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH); } public static String getFileDateString(Date date) { return coreFnt().format(date); } public static String getFileDateString(String date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String date1 = null; try { date1 = sdf.parse(date).toString(); } catch (ParseException e) { e.printStackTrace(); } return date1; } public static String getFileTimeString(String time) { SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); String times = null; try { times = sdf.parse(time).toString(); } catch (ParseException e) { e.printStackTrace(); } return times; } public static String getYYYYMMDDDate(Date date) { if(null==date){ return ""; } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String ymd=sdf.format(date); return ymd; } public static String getHHMMSSDate(Date time) { if(null==time){ return ""; } SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); String hms=sdf.format(time); return hms; } /** * 判断是否为当月的15日 * @return */ public static boolean getCurrentDayIsFift(){ Calendar cal = Calendar.getInstance(); int day = cal.get(Calendar.DATE); if(day==15){ return true; }else{ return false; } } /** * * @param now * @param day * @return */ public static String addDay(Date now, int day) { Calendar calendar = Calendar.getInstance(); calendar.setTime(now); // 把日期往后增加一天.整数往后推,负数往前移动 calendar.add(Calendar.DATE, day); return getDateStringToDb(calendar.getTime()); } public static void main(String[] args) { try { System.out.println(toChineseDate("2018-06-07")); System.out.println(calDate("2018/06/07", -1, "dd")); } catch (ParseException e) { e.printStackTrace(); } } public static String getTimeIncDayCount2(String inputDate, int dayCount) { SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd"); Date date; String dat=""; try { date = sf.parse(inputDate); Calendar calendar = new GregorianCalendar(); calendar.setTime(date); //把日期往后增加一天.整数往后推,负数往前移动 calendar.add(Calendar.DATE,dayCount); //这个时间就是日期往后推一天的结果 date=calendar.getTime(); dat=sf.format(date); } catch (ParseException e) { e.printStackTrace(); } return dat; } }