0

私は自動化のために Selenium Webdriver を使用しており、人の現在の年齢を取得して、アプリケーションに入力されている年齢と比較する必要があります。

私のコードは次のようになります:

String DOB = driver.findElement(By.id("")).getAttribute("value");
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy"); 
Date convertedDate = dateFormat.parse(DOB);

Calendar currentDate = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("MM-dd-yyyy");
Date currentNow = currentDate.getTime();

System.out.println("Sys date: " + currentNow);
System.out.println("DOB Date: " + convertedDate);

出力:

Sys date: Tue Mar 05 12:25:19 IST 2013
DOB Date: Wed Mar 15 00:00:00 IST 1967

自動入力されているアプリケーションの年齢と比較できるように、適切な年齢を取得するにはどうすればよいですか。現在、使用して減算する.getYear()と、1 月 1 日から始まる年の日付が想定されているため、適切な年齢が計算されません。

正しい年齢を正しく計算できるように、これを手伝ってください。

4

2 に答える 2

0

これが役立つかどうかを確認してください。この方法では、正確な年数が得られます。

public static int getDiffYears(Date first, Date last) {
    Calendar a = getCalendar(first);
    Calendar b = getCalendar(last);
    int diff = b.get(YEAR) - a.get(YEAR);
    if (a.get(MONTH) > b.get(MONTH) || 
        (a.get(MONTH) == b.get(MONTH) && a.get(DATE) > b.get(DATE))) {
        diff--;
    }
    return diff;
}
于 2013-03-07T09:02:49.097 に答える
0

すでに年を比較している場合は、月/日を現在のものと比較してみませんか? カレンダーは、少しの説得でこれを行うことができます。

    //Retrieve date from application
    String DOB = driver.findElement(By.id("")).getAttribute("value");

    //Define the date format & create a Calendar for this date
    SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
    Calendar birthday = Calendar.getInstance();
    birthday.setTime(sdf.parse(DOB)); 

    //Create a Calendar object with the current date
    Calendar now = Calendar.getInstance();

    //Subtract the years to get a general age.
    int diffYears = now.get(Calendar.YEAR) - birthday.get(Calendar.YEAR);

    //Set the birthday for this year & compare
    birthday.set(Calendar.YEAR, now.get(Calendar.YEAR));
    if (birthday.after(now)){
        //If birthday hasn't passed yet this year, subtract a year
        diffYears--;
    }

お役に立てれば。

于 2013-03-05T18:38:53.837 に答える