0

だから私はこの方法を持っています.roosterIDは現在の年と週に基づいてIDを生成するためのものです.これは私が思いついたものですが、これが最善の方法だとは思いません.ある時点で再帰的なメソッド。それは私が望んでいたようには機能しませんでした。少なくとも、私が試した方法です。基本的に、53 週間ある年があるとします。現在の週と今後 2 週間の roosterID を使用して、rDAO の load メソッドを呼び出しています。基本的には、roosterID を 201353 の次の週に 20141 にしたいのですが、単純に roosterID+1 を使用すると 201354 になります。

以下のコードは機能しますが、ちょっと汚くて専門的ではないと思いますが、もっとうまくやれると思います。何か変更があれば、ほとんどすべてのコードをやり直さなければならないので、アドバイスが欲しいです。

    public void getWeekTabs(){
    gc.setFirstDayOfWeek(Calendar.MONDAY);
    if(gc.get(Calendar.WEEK_OF_YEAR) <= gc.getWeeksInWeekYear()-2){
        roosterID = Integer.parseInt(Integer.toString(gc.get(Calendar.YEAR)) + Integer.toString(gc.get(Calendar.WEEK_OF_YEAR)));
        rDAO.load(roosterID);
        rDAO.load(roosterID +1);
        rDAO.load(roosterID +2);
    }else if(gc.get(Calendar.WEEK_OF_YEAR) == gc.getWeeksInWeekYear()-1){
        roosterIDtemp = Integer.parseInt(Integer.toString(gc.get(Calendar.YEAR) +1 ) + Integer.toString(1));
        rDAO.load(roosterID);
        rDAO.load(roosterID +1);
        rDAO.load(roosterIDtemp);
    }else if(gc.get(Calendar.WEEK_OF_YEAR) == gc.getWeeksInWeekYear()){
        roosterIDtemp = Integer.parseInt(Integer.toString(gc.get(Calendar.YEAR) +1 ) + Integer.toString(1));
        rDAO.load(roosterID);
        rDAO.load(roosterIDtemp);
        rDAO.load(roosterIDtemp +1);
    }       
}
4

1 に答える 1

4

まず第一に、これは奇妙です:

roosterID = Integer.parseInt(Integer.toString(gc.get(Calendar.YEAR)) + Integer.toString(gc.get(Calendar.WEEK_OF_YEAR)));

これを行う:

public String makeRoosterId(Calendar gc) {
    return String.format("%d%d", gc.get(Calendar.YEAR), gc.get(Calendar.WEEK_OF_YEAR));
}

20141 の代わりに 201401 が必要な場合は、フォーマット式を変更してそれを行うことができます。次に、3 つのアイテムをロードします。

Calendar c = Calendar.getInstance(); // current date
rDAO.load(makeRoosterId(c));         // Load this week
c.add(Calendar.WEEK_OF_YEAR, 1);
rDAO.load(makeRoosterId(c));         // Load next week
c.add(Calendar.WEEK_OF_YEAR, 1);
rDAO.load(makeRoosterId(c));         // Load the week after that

それはそれを行う必要があります。

編集:年の境界で発生する問題についてのコメントを参照してください。

于 2013-11-07T13:06:14.200 に答える