当前位置:数据分析 > java 获取两个日期之间的所有月份 (年月)、以及月数、年数

java 获取两个日期之间的所有月份 (年月)、以及月数、年数

  • 发布:2023-09-26 12:32

/*** 获取两个日期之间的所有月份 (年月)** @param startTime* @param endTime* @return:YYYY-MM*/public static List getMonthBetweenDate(String startTime, String endTime){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");// 声明保存日期集合List list = new ArrayList();try {// 转化成日期类型Date startDate = sdf.parse(startTime);Date endDate = sdf.parse(endTime);//用Calendar 进行日期比较判断Calendar calendar = Calendar.getInstance();while (startDate.getTime()<=endDate.getTime()){// 把日期添加到集合list.add(sdf.format(startDate));// 设置日期calendar.setTime(startDate);//把日期增加一天calendar.add(Calendar.MONTH, 1);// 获取增加后的日期startDate=calendar.getTime();}} catch (ParseException e) {e.printStackTrace();}return list;}public static void main(String[] args) throws ParseException {String startStr = "2021-02-26";String endStr = "2022-03-09";List list = getMonthBetweenDate(startStr, endStr);System.out.println(list);} 输出结果 /*** 根据两个时间获取相差的月数* @param d1 日期起期* @param d2 日期止期* @return*/public static int getMonth(Date d1, Date d2) {Calendar c1 = Calendar.getInstance();Calendar c2 = Calendar.getInstance();c1.setTime(d1);c2.setTime(d2);int year1 = c1.get(Calendar.YEAR);int year2 = c2.get(Calendar.YEAR);int month1 = c1.get(Calendar.MONTH);int month2 = c2.get(Calendar.MONTH);int day1 = c1.get(www.sychzs.cn_OF_MONTH);int day2 = c2.get(www.sychzs.cn_OF_MONTH);// 获取年的差值int yearInterval = year1 - year2;// 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数if (month1 < month2 || month1 == month2 && day1 < day2) {yearInterval--;}// 获取月数差值int monthInterval = (month1 + 12) - month2;if (day1 < day2) {monthInterval--;}monthInterval %= 12;int monthsDiff = Math.abs(yearInterval * 12 + monthInterval);return monthsDiff;} /*** 根据两个日期获取相差年数* @param startDate 日期起期* @param endDate 日期止期* @return*/public static int getYear(Date startDate, Date endDate) {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");String startDateStr = simpleDateFormat.format(startDate);String endDateStr = simpleDateFormat.format(endDate);return (Integer.parseInt(endDateStr) - Integer.parseInt(startDateStr)) / 10000;} 根据出生日期算年龄 /*** 根据出生日期获取当前时间的年龄* @param birthdate* @return*/public static int getYear(Date birthdate) {Date now = new Date();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");String format1 = simpleDateFormat.format(birthdate);String format = simpleDateFormat.format(now);return (Integer.parseInt(format) - Integer.parseInt(format1)) / 10000;} package www.sychzs.cn;import org.junit.Test;import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import www.sychzs.cn; import java.util.List;/*** @author Chang* @program: bmps-cloud-core-prd07* @description: 测试类* @date 2022-07-17 15:21:01*/ public class Test02 {/*** 截取字符串*/@Testpublic void test1(){String polApplyDateStr = "20220102";String insuredBirthdayStr = "20210909";String substring1 = polApplyDateStr.substring(4, 8);String substring2 = insuredBirthdayStr.substring(4, 8);String substring = polApplyDateStr.substring(0, 4);System.out.println(substring);System.out.println(substring1);System.out.println(substring2);}/*** 冒号分割字符串*/@Testpublic void test2(){String riskAmntHashKey="1:2:3";String[] split = riskAmntHashKey.split(":");String s = split[1];System.out.println(s);}/***保留两位小数*/@Testpublic void test3(){double f = 111231.5545;DecimalFormat df = new DecimalFormat("#.00");System.out.println(df.format(f));}@Testpublic void test4() throws ParseException {/*** 获取两个日期之间的所有月份 (年月)** @param startTime* @param endTime* @return:YYYY-MM*/String startStr = "2021-07-10";String endStr = "2022-08-10";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");// 声明保存日期集合List list = new ArrayList();// 转化成日期类型Date startDate = sdf.parse(startStr);Date endDate = sdf.parse(endStr);//用Calendar 进行日期比较判断Calendar calendar = Calendar.getInstance();while (startDate.getTime() <= endDate.getTime()) {// 把日期添加到集合list.add(sdf.format(startDate));// 设置日期calendar.setTime(startDate);//把日期增加一天calendar.add(Calendar.MONTH, 1);// 获取增加后的日期startDate = calendar.getTime();}System.out.println(list);}} /*** list集合转字符串,用分隔符分隔** @param list* @param separator* @return*/public String listToString(List list, char separator) {StringBuilder sb = new StringBuilder();for (int i = 0; i < list.size(); i++) {sb.append(list.get(i));if (i < list.size() - 1) {sb.append(separator);}}return sb.toString();}

相关文章