|  |  |  | 
|---|
|  |  |  | package com.dsh.account.util; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.text.ParseException; | 
|---|
|  |  |  | import java.time.DayOfWeek; | 
|---|
|  |  |  | import java.time.Duration; | 
|---|
|  |  |  | import java.time.LocalDate; | 
|---|
|  |  |  | import java.time.LocalDateTime; | 
|---|
|  |  |  | import java.time.format.DateTimeFormatter; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 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() { | 
|---|
|  |  |  | LocalDate today = LocalDate.now(); | 
|---|
|  |  |  | DayOfWeek dayOfWeek = today.getDayOfWeek(); | 
|---|
|  |  |  | return dayOfWeek.getValue(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static String getWeekOfDays(int desiredDayOfWeek) { | 
|---|
|  |  |  | // 获取当前日期 | 
|---|
|  |  |  | LocalDate currentDate = LocalDate.now(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取当前周的第一天(默认以星期一为一周的开始) | 
|---|
|  |  |  | LocalDate firstDayOfWeek = currentDate.with(DayOfWeek.MONDAY); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | LocalDate desiredDate = firstDayOfWeek.plusDays(desiredDayOfWeek - 1); | 
|---|
|  |  |  | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM.dd"); | 
|---|
|  |  |  | return desiredDate.format(formatter); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //    public static void main(String[] args) { | 
|---|
|  |  |  | //        String weekOfDays = LocalDateTimeUtils.getWeekOfDays(4); | 
|---|
|  |  |  | //        System.out.println(weekOfDays); | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  | } | 
|---|