| | |
| | | import java.text.DateFormat; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | |
| | | |
| | | /** |
| | | * 日期格式化,转换工具类 |
| | | * |
| | | * |
| | | * @author Ron |
| | | * @createTime 2014.08.30 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 返回年份 |
| | | * |
| | | * |
| | | * @param date |
| | | * 日期 |
| | | * @return 返回年份 |
| | |
| | | } |
| | | /** |
| | | * 返回月份 |
| | | * |
| | | * |
| | | * @param date |
| | | * 日期 |
| | | * @return 返回月份 |
| | |
| | | c.setTime(date); |
| | | return c.get(Calendar.MONTH) + 1; |
| | | } catch (Exception e) { |
| | | |
| | | |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | /** |
| | | * 日期转字符串 |
| | | * |
| | | * |
| | | * @param date |
| | | * @param format |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 字符串转日期 |
| | | * |
| | | * |
| | | * @param dateStr |
| | | * @param format |
| | | * @return |
| | |
| | | try { |
| | | return fmt.parse(dateStr); |
| | | } catch (ParseException e) { |
| | | |
| | | |
| | | } |
| | | return null; |
| | | } |
| | |
| | | |
| | | /** |
| | | * 判断给定的日期是一周中的第几天,注意:按照中国的习惯,周日是第七天 |
| | | * |
| | | * |
| | | * @param date |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 指定时间的下一天 |
| | | * |
| | | * |
| | | * @param date |
| | | * @return |
| | | */ |
| | |
| | | cal.add(Calendar.DATE, 1); |
| | | return cal.getTime(); |
| | | } catch (Exception e) { |
| | | |
| | | |
| | | } |
| | | |
| | | return null; |
| | |
| | | |
| | | /** |
| | | * 指定时间的前一天 |
| | | * |
| | | * |
| | | * @param date |
| | | * @return |
| | | */ |
| | |
| | | cal.add(Calendar.DATE, -1); |
| | | return cal.getTime(); |
| | | } catch (Exception e) { |
| | | |
| | | |
| | | } |
| | | |
| | | return null; |
| | |
| | | |
| | | /** |
| | | * 指定时间的下N天 |
| | | * |
| | | * |
| | | * @param date |
| | | * @return |
| | | */ |
| | |
| | | cal.add(Calendar.DATE, nDay); |
| | | return cal.getTime(); |
| | | } catch (Exception e) { |
| | | |
| | | |
| | | } |
| | | |
| | | return null; |
| | |
| | | |
| | | /** |
| | | * 指定时间的前N天 |
| | | * |
| | | * |
| | | * @param date |
| | | * @return |
| | | */ |
| | |
| | | cal.add(Calendar.DATE, -nDay); |
| | | return cal.getTime(); |
| | | } catch (Exception e) { |
| | | |
| | | |
| | | } |
| | | |
| | | return null; |
| | |
| | | |
| | | /** |
| | | * 获取一天的起始时间 |
| | | * |
| | | * |
| | | * @param date |
| | | * @return |
| | | */ |
| | |
| | | try { |
| | | return fmt.parse(dateStr); |
| | | } catch (ParseException e) { |
| | | |
| | | |
| | | } |
| | | |
| | | return date; |
| | |
| | | |
| | | /** |
| | | * 获取一天的结束时间 |
| | | * |
| | | * |
| | | * @param date |
| | | * @return |
| | | */ |
| | |
| | | try { |
| | | return fmt.parse(dateStr); |
| | | } catch (ParseException e) { |
| | | |
| | | |
| | | } |
| | | |
| | | return date; |
| | |
| | | |
| | | /** |
| | | * currentDat是否在referenceDate日期之前 |
| | | * |
| | | * |
| | | * @param referenceDate |
| | | * @param currentDat |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * currentDat是否在referenceDate日期之后 |
| | | * |
| | | * |
| | | * @param referenceDate |
| | | * @param currentDat |
| | | * @return |
| | |
| | | } |
| | | /** |
| | | * 判断currentDate是否在startDate和endDate之间,不包括startDate和endDate |
| | | * |
| | | * |
| | | * @param startDate |
| | | * @param endDate |
| | | * @param currentDate |
| | |
| | | return false; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 获取startDate到endDate之间的星期day(中文星期)不包括startDate和endDate |
| | | * |
| | | * |
| | | * @param startDate |
| | | * @param endDate |
| | | * @param day |
| | |
| | | return listDate; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * date转换成Timestamp |
| | | * |
| | | * |
| | | * @param date |
| | | * @param format |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 获取早中晚 |
| | | * |
| | | * |
| | | * @param time |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 获取早中晚的开始时间 |
| | | * |
| | | * |
| | | * @param date |
| | | * @param time |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 获取早中晚的结束时间 |
| | | * |
| | | * |
| | | * @param date |
| | | * @param time |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 得到几天前的时间 |
| | | * |
| | | * |
| | | * @param d |
| | | * @param day |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 得到几天后的时间 |
| | | * |
| | | * |
| | | * @param d |
| | | * @param day |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 将日期类型格式化成字符串 |
| | | * |
| | | * |
| | | * @param date |
| | | * @return 格式化后日期字符串 |
| | | * @throws ParseException |
| | |
| | | |
| | | /** |
| | | * 获取时间戳 |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getTimeMark() { |
| | |
| | | } |
| | | return um; |
| | | } |
| | | |
| | | /** |
| | | * 根据单位计算目标日期 |
| | | * |
| | | * @param num 距离 |
| | | * @param unit 日期单位 Y/M/D |
| | | * @return |
| | | */ |
| | | public static Date calDate(Integer num, String unit) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | Date targetDate = null; |
| | | switch (unit) { |
| | | case "Y": |
| | | calendar.add(Calendar.YEAR, num); |
| | | targetDate = calendar.getTime(); |
| | | break; |
| | | case "M": |
| | | calendar.add(Calendar.MONTH, num); |
| | | targetDate = calendar.getTime(); |
| | | break; |
| | | case "D": |
| | | calendar.add(Calendar.DAY_OF_MONTH, num); |
| | | targetDate = calendar.getTime(); |
| | | break; |
| | | default: |
| | | targetDate = stringToDate("9999-12-31", DATE_FORMAT_DD); |
| | | |
| | | } |
| | | |
| | | return targetDate; |
| | | } |
| | | |
| | | public static String getAgeForBirthDay(Date birthDay) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | if (birthDay == null) { |
| | | return "-"; |
| | | } |
| | | // 出生日期晚于当前时间,无法计算 |
| | | if (cal.before(birthDay)) { |
| | | return "-"; |
| | | } |
| | | // 当前年份 |
| | | int yearNow = cal.get(Calendar.YEAR); |
| | | // 当前月份 |
| | | int monthNow = cal.get(Calendar.MONTH); |
| | | // 当前日期 |
| | | int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); |
| | | cal.setTime(birthDay); |
| | | int yearBirth = cal.get(Calendar.YEAR); |
| | | int monthBirth = cal.get(Calendar.MONTH); |
| | | int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH); |
| | | // 计算整岁数 |
| | | Integer age = yearNow - yearBirth; |
| | | if (monthNow <= monthBirth) { |
| | | if (monthNow == monthBirth) { |
| | | if (dayOfMonthNow < dayOfMonthBirth) { |
| | | // 当前日期在生日之前,年龄减一 |
| | | age--; |
| | | } |
| | | } else { |
| | | age--; |
| | | } |
| | | } |
| | | |
| | | return age.toString(); |
| | | } |
| | | } |