年齢算出

年齢を算出するために Ageクラスが準備されています。

以下の例は、2017年度4月に小学校へ入学する児童の年齢です(満6歳が対象児童)。

import ajd4jp.*;
import ajd4jp.format.*;

public class Test {
    public static void main(String[] argv) throws Exception {
        AJD[] ajd = new AJD[] {
            new AJD(2011, 3, 31),
            new AJD(2011, 4, 1),
            new AJD(2011, 4, 2)
        };
        AJD school = new AJD(2017, 3, 31);
        System.out.println("誕生日\t\t学齢\t年齢(" +
            Formats.DATE.toString(school) + "時点)"
        );
        for (int i = 0; i < 3; i++ ) {
            Age age = new Age(ajd[i]);
            System.out.println(
                Formats.DATE.toString(ajd[i]) + "\t" +
                "満" + age.getAge(Age.Reckoning.DAY, school) + "歳\t" +
                "満" + age.getAge(Age.Reckoning.TIME, school) + "歳"
            );
        }
    }
}
出力例
誕生日          学齢    年齢(2017/03/31時点)
2011/03/31      満6歳   満6歳
2011/04/01      満6歳   満5歳
2011/04/02      満5歳   満5歳

3/31生まれ、4/1生まれが満6歳(学齢)で入学対象です。4/2生まれは翌2018年度入学です。
※満6歳となった日以降の最初の4/1が入学日。
世間一般の「年齢」は、Age.Reckoning.TIME を引数として得たものです。誕生日の当日に加齢します。
一方、法律に定める加齢タイミングは誕生日の前日に加齢します。上の例では「学齢」で Age.Reckoning.DAY 引数で得たものです。
法律を拠所とするものは、入学年度・年金受給発生月等ありますが、前日に加齢します。

以下は、数え年を得る例です。

import ajd4jp.*;
import ajd4jp.format.*;

public class Test {
    public static void main(String[] argv) throws AJDException {
        // 数え年で25歳、42歳、61歳が男性の本厄
        Age age = new Age(new AJD(1976, 4, 1));
        System.out.println(Formats.DATE.toString(age.getDate(Age.Reckoning.ASIA_SOLAR, 25)));
        System.out.println(Formats.DATE.toString(age.getDate(Age.Reckoning.ASIA_SOLAR, 42)));
        System.out.println(Formats.DATE.toString(age.getDate(Age.Reckoning.ASIA_SOLAR, 61)));
    }
}
出力例
2000/01/01
2017/01/01
2036/01/01

数え年は生まれた瞬間が1歳、一律1/1に加齢します。誕生日は関係しません。