Java开发小技巧集锦

在维护项目的时候碰到前辈很多不错的写法,这里记录一下,为以后的开发省时省力。

1.计算年龄

很多时候表会有出生日期字段,但是我们又需要计算他们的年龄进行展示的时候,可以采用在类里冗余一个age字段,然后在get方法中根据出生日期完成年龄计算。

@Data
@TableName("sys_user")
public class SysUser{
    
    

	private static final long serialVersionUID = 1L;

	/**
	 * 主键id
	 */
	@TableId(value = "id", type = IdType.UUID)
	private String id;
	/**
	 * 头像
	 */
	@TableField("AVATAR")
	private String avatar;
	/**
	 * 账号
	 */
	@TableField(name = "ACCOUNT",)
	private String account;
	
	/**
	 * 密码
	 */
	@TableField("PASSWORD")
	private String password;

	/**
	 * 出生日期
	 */
	@TableField("BIRTHDAY")
	private String birthday;
	
	/**
	 * 年龄
	 */
	@TableField(exist = false)
	private int age;
	
    public int getAge() {
    
    
    	//这个就是为空判断
        if (ToolUtil.isNotEmpty(birthday)) {
    
    
            return DateTimeKit.ageOfNow(birthday);
        }
        return age;
    }
}

有一个计算年龄的工具类

public class DateTimeKit {
    
    
	/**
	 * 生日转为年龄,计算法定年龄
	 * @param birthDay 生日
	 * @return 年龄
	 * @throws Exception
	 */
	public static int ageOfNow(Date birthDay) {
    
    
		return age(birthDay,date());
	}
	
	/**
	 * 计算相对于dateToCompare的年龄,长用于计算指定生日在某年的年龄
	 * @param birthDay 生日
	 * @param dateToCompare 需要对比的日期
	 * @return 年龄
	 * @throws Exception
	 */
	public static int age(Date birthDay, Date dateToCompare) {
    
    
		Calendar cal = Calendar.getInstance();
		cal.setTime(dateToCompare);

		if (cal.before(birthDay)) {
    
    
			throw new IllegalArgumentException(StrKit.format("Birthday is after date {}!", formatDate(dateToCompare)));
		}

		int year = cal.get(Calendar.YEAR);
		int month = cal.get(Calendar.MONTH);
		int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);

		cal.setTime(birthDay);
		int age = year - cal.get(Calendar.YEAR);
		
		int monthBirth = cal.get(Calendar.MONTH);
		if (month == monthBirth) {
    
    
			int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
			if (dayOfMonth < dayOfMonthBirth) {
    
    
				//如果生日在当月,但是未达到生日当天的日期,年龄减一
				age--;
			}
		} else if (month < monthBirth){
    
    
			//如果当前月份未达到生日的月份,年龄计算减一
			age--;
		}

		return age;
	}
}

2.子标题

正文

在这里插入代码片

3.子标题

正文

在这里插入代码片

4.子标题

正文

在这里插入代码片

5.子标题

正文

在这里插入代码片

猜你喜欢

转载自blog.csdn.net/weixin_43487532/article/details/128326181
今日推荐