0

整数入力 (N) を取り、次の N 日間の誕生日を返すメソッドが必要です。コードを実行するのは非常に難しいと感じています。以下は、私がどのように機能させたいかを示す単なるコードです。これは決して機能するコードではありません。どんな助けでも大歓迎です。

/* print out all the birthdays in the next N days */
public void show( int N){
    Calendar cal = Calendar.getInstance();
    Date today = cal.getTime();

    // birthdayList is the list containing a list 
    // of birthdays Format: 12/10/1964 (MM/DD/YYYY)

    for(int i = 0; i<birthdayList.getSize(); i++){
        if(birthdayList[i].getTime()- today.getTime()/(1000 * 60 * 60 * 24) == N)){
            System.out.println(birthdayList[i]);
        }
    }

}
4

2 に答える 2

1

検索 StackOverflow

この種の作業は、StackOverflow で何千回とは言わないまでも、何百回も対処されているため、簡単な回答です。詳細については、StackOverflow を検索してください。「joda」と「half-open」、そしておそらく「immutable」を検索してください。そして明らかに、以下のコード例に見られるクラスとメソッド名を検索してください。

java.util.Date と .Calendar を避ける

Java にバンドルされている java.util.Date および .Calendar クラスは避けてください。彼らは厄介なことで有名です。Joda-Time または Java 8 の新しい java.time パッケージを使用します。

Joda-Time

リストに java.util.Date オブジェクトが含まれていると仮定して、それらを Joda-TimeDateTimeオブジェクトに変換します。

// birthDates is a list of java.util.Date objects.
DateTimeZone timeZone = DateTimeZone.forID( "America/Montreal" );
DateTime now = DateTime.now( timeZone );
Interval future = new Interval( now, now.plusDays( 90 ).withTimeAtStartOfDay() ); // Or perhaps .plusMonths( 3 ) depending on your business rules.
List<DateTime> list = new ArrayList<>();
for( java.util.Date date : birthDates ) {
    DateTime dateTime = new DateTime( date, timeZone ); // Convert from java.util.Date to Joda-Time DateTime.
    If( future.contains( dateTime ) ) {
        list.add( dateTime );
    }
}
于 2014-09-10T16:15:16.693 に答える
1
Calendar calendar = Calendar.getInstance(Locale.ENGLISH);
calendar.setTime(new Date());
calendar.add(Calendar.DATE, n); // n is the number of days upto which to be calculated
Date futureDate = calendar.getTime();
List<String> listOfDates = returnListOfDatesBetweenTwoDates(new Date()
                                                                , futureDate);

どこ

public static List<String> returnListOfDatesBetweenTwoDates(java.util.Date fromDate,
                                                             java.util.Date toDate) {
    List<String> listOfDates = Lists.newArrayList();
    Calendar startCal = Calendar.getInstance(Locale.ENGLISH);
    startCal.setTime(fromDate);
    Calendar endCal = Calendar.getInstance(Locale.ENGLISH);
    endCal.setTime(toDate);
    while (startCal.getTimeInMillis() <= endCal.getTimeInMillis()){
        java.util.Date date = startCal.getTime();
        listOfDates.add(new SimpleDateFormat("dd-MM-yyyy"
                                               , Locale.ENGLISH).format(date).trim());
        startCal.add(Calendar.DATE, 1);
    }
    return listOfDates;
}

この日付のリストを誕生日の日付リストと比較し、それに応じて作業します

于 2014-09-10T14:10:50.440 に答える