/**
* 获取两个日期之间的所有月份 (年月)
*
* @param startTime
* @param endTime
* @return:YYYY-MM
*/
public static List<String> getMonthBetweenDate(String startTime, String endTime){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
// 声明保存日期集合
List<String> list = new ArrayList<String>();
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<String> 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(Calendar.DAY_OF_MONTH);
int day2 = c2.get(Calendar.DAY_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 com.xxx;
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 java.util.Date;
import java.util.List;
/**
* @author Chang
* @program: bmps-cloud-core-prd07
* @description: 测试类
* @date 2022-07-17 15:21:01
*/
public class Test02 {
/**
* 截取字符串
*/
@Test
public 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);
}
/**
* 冒号分割字符串
*/
@Test
public void test2(){
String riskAmntHashKey="1:2:3";
String[] split = riskAmntHashKey.split(":");
String s = split[1];
System.out.println(s);
}
/**
*保留两位小数
*/
@Test
public void test3(){
double f = 111231.5545;
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f));
}
@Test
public 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<String> list = new ArrayList<String>();
// 转化成日期类型
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();
}