0

私はJavaが初めてです

2 つの jdatechooser 間の合計月数を取得するにはどうすればよいですか? これについてはすでに検索しましたが、日付がコードに設定されていました。私の場合、JDateChooser を介して日付を入れたいと思います。

このコードを使用してこれを行うことができますが、年が変わると、を使用せずにこれを実行したい合計月数を計算できませんでしたJodaTime

これが私のコードです

    public void month(){
    int TotalMonth;
    Calendar toDate;
    Calendar fromDate; 
    int increment;

    Date dt1 = date1.getDate(); //datechooser 1
    Date dt2 = date2.getDate(); //datechooser 2



    fromDate = Calendar.getInstance();
    toDate = Calendar.getInstance();

    if(dt1.after(dt2))
    {
        fromDate.setTime(dt2);
        toDate.setTime(dt1);
    }
    else
    {
        fromDate.setTime(dt1);
        toDate.setTime(dt2);
    }
    increment = 0;

    TotalMonth = toDate.get(Calendar.MONTH) - (fromDate.get(Calendar.MONTH +  increment));

    jLabel2.setText(Integer.toString(age));

}
4

1 に答える 1

2

JodaTimeは簡単ですが...

開始時刻から終了時刻までループする必要があり、ループMONTHごとにフィールドをインクリメントしながら、日付は終了時刻より前のままです...

例えば...

try {
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    Calendar cal1 = Calendar.getInstance();
    cal1.setTime(sdf.parse("08/03/1972"));
    Calendar cal2 = Calendar.getInstance();
    cal2.setTime(sdf.parse("08/03/2014"));

    // Yes, you can use cal1, but I you might want
    // to preserve it for other reasons...
    Calendar cal3 = Calendar.getInstance();
    cal3.setTime(cal1.getTime());
    int months = 0;
    while (cal3.before(cal2)) {
        cal3.add(Calendar.MONTH, 1);
        months++;
    }

    System.out.println("Months = " + months);

} catch (ParseException exp) {
    exp.printStackTrace();
}

印刷しMonths = 505ます。

に変更cal2すると08/04/1972、印刷されますMonths = 1

于 2014-08-27T05:57:37.460 に答える