/**
* 获取两个日期之间的天数
* @param startDateStr 开始时间
* @param stopDateStr 结束时间
* @return 相差天数
* @throws ParseException
*/
public static int getDatePoor(String startDateStr, String stopDateStr) throws ParseException {
SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
Date startDate = dft.parse(startDateStr);
Date stopDate = dft.parse(stopDateStr);
Calendar cal = Calendar.getInstance();
cal.setTime(startDate);
long startTime = cal.getTimeInMillis();
cal.setTime(stopDate);
long stopTime = cal.getTimeInMillis();
// 天数 也可以获取小时、分钟、秒(上面格式化时间的格式需要对应)
long betweenDays=(stopTime-startTime)/(1000*3600*24);
return Integer.parseInt(String.valueOf(betweenDays)) + 1 ;
}
/**
* 时间加小时
*
* @param time 时间
* @param hour 小时数
* @return
* @throws ParseException
*/
public static String addDateTime(String time,int hour) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date receiveDate = DateUtils.parseDate(time, "yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTime(receiveDate);
calendar.add(Calendar.HOUR_OF_DAY, hour);
time = sdf.format(calendar.getTime());
return time;
}
校验日期格式是否严格
/**
* @Description: 校验时间(6位,年月日)格式 YYMMDD
* @Param: [str]
* @return: boolean
*/
public static boolean checkDateInNumber6(String str) {
if (!checkNumbersAndLength(str, TelProConstant.SIX)) {
return false;
}
String year = String.valueOf(LocalDate.now().getYear()).substring(0, TelProConstant.TWO);
String yy = str.substring(0, TelProConstant.TWO);
String mm = str.substring(TelProConstant.TWO, TelProConstant.FOUR);
String dd = str.substring(TelProConstant.FOUR);
String dateStr = year + yy + mm + dd;
SimpleDateFormat sd = new SimpleDateFormat("yyyyMMdd");
try {
sd.setLenient(false);
//此处指定日期/时间解析是否不严格,在true是不严格,false时为严格
sd.parse(dateStr);
} catch (Exception e) {
return false;
}
return true;
}
// 获取一个月天数
public static int getDaysOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}