MENU

【Java】生年月日から年齢を計算するプログラム

f:id:kiserukun:20210611090227p:plain

生年月日から年齢を返すプログラムを作成したのでアウトプットしておきます。  
java.time.LocalDateクラスを使用して作成していきます。

生年月日から年齢を計算する

今回の流れ
入力jspサーブレットクラス → 出力jsp

CalcServlet.java

サーブレットクラスです

package servlet;

import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/CalcServlet")
public class CalcServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  exec(request, response); 
 }

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  exec(request, response); 
 }

 private void exec(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  
  String year = request.getParameter("year");
  String month = request.getParameter("month");
  String day = request.getParameter("day");
  
  
  Hold hold = new Hold();
  String age = getAge(year, month, day);
  hold.setAge(age);
  request.setAttribute("hold", hold);
  RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/Result.jsp");
  dispatcher.forward(request, response);
 }
 
 private String getAge(String year, String month, String day) {
   String birthdate = year + "/" + month + "/" + day;

   DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/M/d");
   LocalDate localBirdhdate = LocalDate.parse(birthdate, formatter);
   LocalDate nowDate = LocalDate.now();
   return Long.toString(ChronoUnit.YEARS.between(localBirdhdate, nowDate));
 }
}

Hold.java

ageを保持するクラス

package servlet;

public class Hold {
 private String age;

 public String getAge() {
  return age;
 }

 public void setAge(String age) {
  this.age = age;
 }
}

 
 
あとは入力するjspファイルと結果を表示るjspファイル(今回はResult.jsp)を作成すれば完成です。

入力jsp(サンプル)

f:id:kiserukun:20210728134943p:plain

出力先jsp(今回はResult.jsp

f:id:kiserukun:20210728134946j:plain

生年月日を入力すると年齢を表示することができました。

大変参考にしたサイト www.l08084.com