通过拿map中的出生日期去计算年龄的java代码怎么写
时间: 2024-05-05 16:17:51 浏览: 142
可以使用以下Java代码来计算年龄:
```java
Calendar dob = Calendar.getInstance();
dob.setTime(dateOfBirth);
Calendar today = Calendar.getInstance();
int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
if (today.get(Calendar.MONTH) < dob.get(Calendar.MONTH)) {
age--;
} else if (today.get(Calendar.MONTH) == dob.get(Calendar.MONTH)
&& today.get(Calendar.DAY_OF_MONTH) < dob.get(Calendar.DAY_OF_MONTH)) {
age--;
}
System.out.println("年龄是:" + age);
```
以上代码假设出生日期已经存储在一个名为`dateOfBirth`的`Date`对象中。它使用当前日期和出生日期计算出年龄,并将结果存储在`age`变量中。最后,它将年龄打印出来。
相关问题
在map中拿出生日期的数据,去计算年龄的java代码怎么写
可以这样写:
```java
// 假设生日数据存在一个叫做birthday的Map中
Map<String, String> birthday = new HashMap<>();
birthday.put("张三", "1990-05-20");
// 获取当前日期
Calendar now = Calendar.getInstance();
// 获取出生日期
String birthStr = birthday.get("张三");
// 将出生日期转换为日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthDate = sdf.parse(birthStr);
// 计算年龄
Calendar birth = Calendar.getInstance();
birth.setTime(birthDate);
int age = now.get(Calendar.YEAR) - birth.get(Calendar.YEAR);
if (now.get(Calendar.MONTH) < birth.get(Calendar.MONTH)
|| (now.get(Calendar.MONTH) == birth.get(Calendar.MONTH) && now.get(Calendar.DAY_OF_MONTH) < birth.get(Calendar.DAY_OF_MONTH))) {
age--;
}
// 输出年龄
System.out.println("张三的年龄为:" + age);
```
希望能帮到你。
编写一个java代码,对输入的一个身份证号码进行分析,若该号码不合法,输出error,若该号码合法,输出其对应的省市,年龄和性别
以下是一个基本的Java代码,用于分析身份证号码并输出相关信息:
```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class IdCardAnalyzer {
private static Map<String, String> cityCodeMap = new HashMap<String, String>();
static {
cityCodeMap.put("11", "北京");
cityCodeMap.put("12", "天津");
cityCodeMap.put("13", "河北");
cityCodeMap.put("14", "山西");
cityCodeMap.put("15", "内蒙古");
cityCodeMap.put("21", "辽宁");
cityCodeMap.put("22", "吉林");
cityCodeMap.put("23", "黑龙江");
cityCodeMap.put("31", "上海");
cityCodeMap.put("32", "江苏");
cityCodeMap.put("33", "浙江");
cityCodeMap.put("34", "安徽");
cityCodeMap.put("35", "福建");
cityCodeMap.put("36", "江西");
cityCodeMap.put("37", "山东");
cityCodeMap.put("41", "河南");
cityCodeMap.put("42", "湖北");
cityCodeMap.put("43", "湖南");
cityCodeMap.put("44", "广东");
cityCodeMap.put("45", "广西");
cityCodeMap.put("46", "海南");
cityCodeMap.put("50", "重庆");
cityCodeMap.put("51", "四川");
cityCodeMap.put("52", "贵州");
cityCodeMap.put("53", "云南");
cityCodeMap.put("54", "西藏");
cityCodeMap.put("61", "陕西");
cityCodeMap.put("62", "甘肃");
cityCodeMap.put("63", "青海");
cityCodeMap.put("64", "宁夏");
cityCodeMap.put("65", "新疆");
cityCodeMap.put("71", "台湾");
cityCodeMap.put("81", "香港");
cityCodeMap.put("82", "澳门");
cityCodeMap.put("91", "国外");
}
public static void main(String[] args) {
String idCard = "110101201905015758";
Map<String, String> map = analyzeIdCard(idCard);
if (map == null) {
System.out.println("error");
return;
}
System.out.println(map.get("省市"));
System.out.println(map.get("年龄"));
System.out.println(map.get("性别"));
}
public static Map<String, String> analyzeIdCard(String idCard) {
if (idCard == null || idCard.trim().length() != 18) {
return null;
}
// 前17位为数字,最后一位可能是数字或X(大小写均可)
String regex = "\\d{17}[\\dXx]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(idCard);
if (!matcher.matches()) {
return null;
}
// 校验省市代码
String cityCode = idCard.substring(0, 2);
if (!cityCodeMap.containsKey(cityCode)) {
return null;
}
// 校验出生日期
String birthStr = idCard.substring(6, 14);
Date birthDate = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
birthDate = sdf.parse(birthStr);
} catch (ParseException e) {
return null;
}
// 计算年龄
Calendar birthCal = Calendar.getInstance();
birthCal.setTime(birthDate);
Calendar nowCal = Calendar.getInstance();
if (birthCal.after(nowCal)) {
return null;
}
int age = nowCal.get(Calendar.YEAR) - birthCal.get(Calendar.YEAR);
if (nowCal.get(Calendar.DAY_OF_YEAR) < birthCal.get(Calendar.DAY_OF_YEAR)) {
age--;
}
// 获取性别
String gender = idCard.substring(16, 17);
if (Integer.parseInt(gender) % 2 == 0) {
gender = "女";
} else {
gender = "男";
}
// 封装结果
Map<String, String> result = new HashMap<String, String>();
result.put("省市", cityCodeMap.get(cityCode));
result.put("年龄", String.valueOf(age));
result.put("性别", gender);
return result;
}
}
```
代码中使用了正则表达式和Map等Java中常见的数据结构,实现了身份证号码的基本分析功能。需要注意的是,这只是一个简单的示例,实际上身份证号码的校验和解析还有很多细节需要考虑,比如校验码的计算、15位身份证号码的转换等等。
阅读全文