-1

定期的な更新を行う方法を実装したい

  public void periodicUpdate(int frequence){
        //frequence 1 daily, 2 monthly, 3 yearly
        switch(frequence){
            case 1:
                if(aDayIsExpired()){
                    update();
                }
                break;

            case 2:
                if(aMontyhIsExpired()){
                    update();
                }
                break;
            ...

        }

        default:
        if(aYearIsExpired()){
            update();
        }
        break;
        ...

    }

しかし、どうすれば 1日1 か月1 年の有効期限を数えることができるかわかりません。次のようなものが必要です

 GregorianCalendar startDate = new GregorianCalendar();

保存され、アプリが起動するたびに比較する必要があります

GregorianCalendar now = new GregorianCalendar();

now残念ながら、私の問題を比較して解決する方法startDateと、これが正しい方法であるかどうかはわかりません。

4

2 に答える 2

0

「1年が経過した」の定義が何であるかによって異なります。365 日である可能性があります。日/月フィールドが同じ値で、年フィールドが +1 である可能性があります。

1 年を 365 日とすると、

if((now.getTimeInMillis() - startDate.getTimeInMillis()) > 31556952000)
    return true;

「aYearHasPassed」メソッドの場合、31556952000 は 365 日のミリ秒数です。

猫の皮を剥ぐ 1 つの方法だけでは、正確な要件を満たさない場合があります。

于 2014-01-29T00:35:56.337 に答える