用java 写一个计算年龄的方法。例如出生日期是1998-07-03
时间: 2023-03-12 21:09:30 浏览: 50
可以使用Java 8的java.time包来实现,如下面的示例代码: LocalDate birthdate = LocalDate.of(1998, 7, 3);
LocalDate now = LocalDate.now();
Period period = Period.between(birthdate, now);
int years = period.getYears();
相关问题
用java代码写数据库只有出生日期,怎么做年龄的区间查询
可以通过 SQL 语句中的函数和运算符来实现。
例如,可以使用 MySQL 中的 DATEDIFF() 函数来计算出生日期和当前日期之间的天数,然后将天数转换为年龄,然后根据所需的年龄区间,在 WHERE 子句中添加相应的条件。
具体的 SQL 语句示例如下:
```sql
SELECT * FROM users
WHERE YEAR(CURDATE()) - YEAR(birthday) -
CASE WHEN DATE_FORMAT(CURDATE(), '%m-%d') < DATE_FORMAT(birthday, '%m-%d')
THEN 1 ELSE 0 END
BETWEEN 18 AND 25;
```
这个 SQL 查询将从名为 "users" 的表中选取符合年龄区间为 18 到 25 岁的用户记录。
使用 Java 代码连接数据库并执行此 SQL 查询,可以参考以下示例代码:
```java
import java.sql.*;
public class AgeQueryDemo {
public static void main(String[] args) {
String jdbcUrl = "jdbc:mysql://localhost:3306/mydb";
String username = "myuser";
String password = "mypassword";
try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password);
PreparedStatement stmt = conn.prepareStatement(
"SELECT * FROM users" +
" WHERE YEAR(CURDATE()) - YEAR(birthday) - " +
" CASE WHEN DATE_FORMAT(CURDATE(), '%m-%d') < DATE_FORMAT(birthday, '%m-%d')" +
" THEN 1 ELSE 0 END" +
" BETWEEN ? AND ?")) {
stmt.setInt(1, 18);
stmt.setInt(2, 25);
try (ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
System.out.printf("User: %d, %s, %s%n",
rs.getInt("id"), rs.getString("name"), rs.getDate("birthday"));
}
}
} catch (SQLException ex) {
System.out.println("Database error: " + ex.getMessage());
}
}
}
```
此示例假设数据库表 "users" 中包含 "id"、"name" 和 "birthday" 三个列。"""
Java根据身份证号计算年龄
### 回答1:
可以使用Java中的SimpleDateFormat类将身份证号中的出生日期解析为日期类型,然后使用ChronoUnit类计算出生日期和当前日期之间的时间差,最后除以365即可得到年龄。
代码示例如下:
```
String idCard = "xxxxxxxxxxxxxxxxx";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date birthdate = sdf.parse(idCard.substring(6, 14));
long age = ChronoUnit.YEARS.between(birthdate.toInstant(), LocalDateTime.now().toInstant());
System.out.println("Age: " + age);
```
请注意,这仅是示例代码,请根据实际情况修改。
### 回答2:
在Java中,计算身份证号对应的年龄需要进行一系列的操作。首先,我们需要获取当前的日期信息,可以使用`java.util.Date`类的`getYear()、getMonth()`和`getDate()`方法来获取当前的年、月和日。然后,我们需要获取输入的身份证号中的出生日期信息。根据身份证号的规则,出生日期信息位于第7到第14位。我们可以使用`String`类的`substring()`方法来截取出生日期信息。
接下来,我们需要将截取到的出生日期信息转换为`java.util.Date`类型。我们可以使用`SimpleDateFormat`类来实现,其中指定日期格式为"yyyyMMdd"。然后,我们将得到的日期信息与当前的日期信息进行比较,即通过计算当前年份与出生年份的差值来得到年龄。但是需要注意的是,身份证中的出生日期只包含了年、月和日的信息,并不包含具体的时、分和秒,所以在比较时需要将当前的日期信息更改为出生日期的月和日。
最后,我们可以将得到的年龄返回或者输出给用户。为了使得代码更加健壮,我们可以进行一些异常处理,例如判断输入的身份证号是否符合规则、出生日期是否合法等。
综上所述,通过上述步骤,我们可以在Java中根据身份证号计算出相应的年龄。以上只是一个简单的示例,实际中可能需要更多的细节和步骤来处理各种边界情况。