Tính tuổi dựa vào ngày sinh trong Java (Calculate Age using current date and date of birth in Java).


Bài viết này tôi sẽ hướng dẫn làm một bài tập tinh tuổi của một người dựa vào ngày sinh của người đó trong ngôn ngữ lập trình Java.





Mã nguồn - Source Code

/**
 * @(#)sadfasdf.java
 *
 *
 * @author BUI NGOC SON
 * @website VNLIVES.NET
 * @version 1.00 2014/5/20
 */

import java.text.*;
import java.util.*;

public class CalculateAge {

    public static void main(String[] args) {
       
        System.out.print("Enter your Date of Birth in format MM-dd-yyyy: ");
        Scanner input = new Scanner(System.in);
        String dateOfBirth = input.nextLine();
       
        try {
           
            int age = 0;
            int factor = 0;

            Calendar cal1 = new GregorianCalendar();
            Calendar cal2 = new GregorianCalendar();
           
            Date date1 = new SimpleDateFormat("MM-dd-yyyy").parse(dateOfBirth);
            Date date2 = new Date();
           
            cal1.setTime(date1);
            cal2.setTime(date2);
           
            if (cal2.get(Calendar.DAY_OF_YEAR) < cal1.get(Calendar.DAY_OF_YEAR)) {
                System.out.println("-----------------------------------");
                System.out.println("cal day 1: " + cal2.get(Calendar.DAY_OF_YEAR));
                System.out.println("cal day 2: " + cal1.get(Calendar.DAY_OF_YEAR));
                System.out.println("-----------------------------------");
                factor = -1;
            }
           
            age = cal2.get(Calendar.YEAR) - cal1.get(Calendar.YEAR) + factor;
            System.out.println("cal1: " + cal1.get(Calendar.YEAR));
            System.out.println("cal2: " + cal2.get(Calendar.YEAR));
            System.out.println("Factor: " + factor);
            System.out.println("-----------------------------------");
           
            //System.out.println("Date current is: " + date2.toLocaleString());
            System.out.println("Your age is: " + age);
           
        } catch (ParseException e) {
            System.out.println(e);
           
        }
       
    }
}

*factor = -1; Việc tính toán giá trị này dựa vào số ngày sinh của năm sinh tính từ năm của ngày sinh và số ngày từ từ ngày hiện tại của năm hiện tại, sẽ giúp ta xác định được độ trên lệch của ngày tháng của hai năm, từ đó xác định được tại ngày tháng hiện tại đã tới hoặc chưa tới sinh nhật của bạn chưa từ đó gán giá trị -1 để trừ bớt tuổi được xác định bởi số năm.

Hiểu đơn giản là nếu chưa tới sinh nhật của bạn thì bạn là 20 tuổi nhưng khi tới sinh nhật của bạn thì bạn sẽ là 21 tuổi.


Kết quả - Result











No comments:

Post a Comment