| | |
| | | import java.time.Duration; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * LocalDateTimeUtils |
| | |
| | | * @version V1.0 |
| | | */ |
| | | public class LocalDateTimeUtils { |
| | | private final static int[] dayArr = new int[] { 20, 19, 21, 20, 21, 22, 23, 23, 23, 24, 23, 22 }; |
| | | private final static String[] constellationArr = new String[] { "摩羯座", "水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座", "摩羯座" }; |
| | | private final static int[] dayArr = new int[]{20, 19, 21, 20, 21, 22, 23, 23, 23, 24, 23, 22}; |
| | | private final static String[] constellationArr = new String[]{"摩羯座", "水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座", "摩羯座"}; |
| | | |
| | | |
| | | /** |
| | |
| | | |
| | | /** |
| | | * 通过生日计算年龄 |
| | | * |
| | | * @param birthDay 生日 |
| | | * @return |
| | | * @throws ParseException |
| | | */ |
| | | public static int getAgeByBirth(LocalDate birthDay) throws ParseException { |
| | | int age = 0; |
| | | //出生日期晚于当前时间,无法计算 |
| | | LocalDate now=LocalDate.now(); |
| | | //出生日期晚于当前时间,无法计算 |
| | | LocalDate now = LocalDate.now(); |
| | | if (birthDay.isAfter(now)) { |
| | | throw new IllegalArgumentException( "生日大于当前时间!"); |
| | | throw new IllegalArgumentException("生日大于当前时间!"); |
| | | } |
| | | //当前年份 |
| | | int yearNow = now.getYear(); |
| | |
| | | //当前日期 |
| | | int dayOfMonthNow = now.getDayOfMonth(); |
| | | |
| | | int yearBirth =birthDay.getYear(); |
| | | int yearBirth = birthDay.getYear(); |
| | | int monthBirth = birthDay.getMonthValue(); |
| | | int dayOfMonthBirth = birthDay.getDayOfMonth(); |
| | | //计算整岁数 |
| | | age = yearNow - yearBirth; |
| | | if (monthNow <= monthBirth) { |
| | | if (monthNow == monthBirth) { |
| | | if (dayOfMonthNow < dayOfMonthBirth){ |
| | | if (dayOfMonthNow < dayOfMonthBirth) { |
| | | //当前日期在生日之前,年龄减一 |
| | | age--; |
| | | } |
| | |
| | | */ |
| | | |
| | | public static String getConstellation(LocalDate date) { |
| | | Integer month=date.getMonthValue(); |
| | | Integer day=date.getDayOfMonth(); |
| | | Integer month = date.getMonthValue(); |
| | | Integer day = date.getDayOfMonth(); |
| | | return day < dayArr[month - 1] ? constellationArr[month - 1] : constellationArr[month]; |
| | | } |
| | | |
| | | /** |
| | | * 获取当天的星期几 |
| | | * |
| | | * @return |
| | | */ |
| | | public static int getWeekStr(){ |
| | | public static int getWeekStr() { |
| | | LocalDate today = LocalDate.now(); |
| | | DayOfWeek dayOfWeek = today.getDayOfWeek(); |
| | | return dayOfWeek.getValue(); |
| | | } |
| | | |
| | | /** |
| | | * 根据输入本周的周几,获取当天的时间 |
| | | * |
| | | * @param dayOfWeekInput 周几 |
| | | * @return |
| | | */ |
| | | public static Date getDateOfWeekNum(int dayOfWeekInput) { |
| | | // 获取当前日期 |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(new Date()); |
| | | |
| | | // 设置为本周的第一天(星期一) |
| | | calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); |
| | | |
| | | // 根据输入的星期几数值,计算出相应的偏移量 |
| | | int dayOfWeekIndex = (dayOfWeekInput + 6) % 7; |
| | | calendar.add(Calendar.DAY_OF_WEEK, dayOfWeekIndex); |
| | | |
| | | // 获取计算后的日期 |
| | | return calendar.getTime(); |
| | | } |
| | | |
| | | |
| | | } |