要求:给一个Date类型的出生时间,出身年月日使用时间选择器选取,得到此人的年龄,要求年龄限制在1-100岁之间。
1.在jsp页面得到出生时间,格式为yyyy-MM-dd HH:mm:ss,限定最小选择范围以当前时间往后退100年,即1920年,最大范围为昨天。
<ui:idate id="birthday" name="birthday" value="${birthday}" label="出生年月日"
mindate="1920-12-3 00:00:00" maxdate="2020-12-2 00:00:00"
format="yyyy-MM-dd HH:mm:ss" required="true" />
2.在controller层获取前端的表单数据,传递到Service层保存。
public void saveUempChkClass() throws ParseException {
String jsonStr = this.pageData.getParams().get("form");//获取表单数据
StuService.save(jsonStr);//在service层保存
this.returnData.toSuccess("保存成功!");
}
3.在Service层计算并保存
3.1 获取json格式数据
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
3.2 get出生时间()
String birthday = (String)jsonObject.get("birthday") ;//出生时间
3.3 将String格式的数据转为Date格式
Date birthdaynow = parse(birthday);
//字符串转换为Date格式
public static Date parse(String strDate) throws ParseException
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.parse(strDate); }
3.4 由出生时间计算年龄
String age= getAge(birthdaynow);
//根据时间获取年龄
private String getAge(Date birthdaynow) throws ParseException {
Calendar cal = Calendar.getInstance();//当前时间
//当前的年月日
int yearNow = cal.get(Calendar.YEAR); //年
int monthNow = cal.get(Calendar.MONTH); //月
int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); //日
cal.setTime(birthdaynow);//出生时间Date
//出生的年月日
int yearBirth = cal.get(Calendar.YEAR);
int monthBirth = cal.get(Calendar.MONTH);
int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
int age = yearNow - yearBirth;
if (monthNow <= monthBirth) {
if (monthNow == monthBirth) {
if (dayOfMonthNow < dayOfMonthBirth)
age--;
}else{
age--;
}
}
String s2 = String.valueOf(age);//int转为String类型
return s2;
}
目录
要求:给一个Date类型的出生时间,出身年月日使用时间选择器选取,得到此人的年龄,要求年龄限制在1-100岁之间。
1.在jsp页面得到出生时间,格式为yyyy-MM-dd HH:mm:ss,限定最小选择范围以当前时间往后退100年,即1920年,最大范围为昨天。
2.在controller层获取前端的表单数据,传递到Service层保存。