2011-11-09 9 views
-1

日(指定されたリスト)が今日から最も近い日であるかどうかを調べるためのクエリがあります。例えば2日間の日数を計算する:Android

day_list is Mon, Tue, Fri, Sat 
and today is Wed 

我々は

Wed to Mon = 5 days 
Wed to Tue = 6 days 
Wed to Fri = 2 days 
Wed to Sat = 3 days 

、紙の上の日を計算すると今では答えはFriになります。

しかし、コードでは、どのようにこのロジックを実装できますか?また、プロセスを最適化する他の方法(if_elseに関する)はありますか?

+0

私はあなたが何もしたくないと確信しています。 2つの日の間の日数? –

+0

この場合、このリンクをチェックしてください:http://stackoverflow.com/questions/3838527/android-java-date-difference-in-days/6406294#6406294 –

+0

私の質問は少し違う、私はリストしか持っていない今日の最も近いものを見つけなければなりません。あなたのリンクのロジックを使用している場合、私の問題は解決可能です、私はどのようにそのロジックを実装することができます私をご案内ください。ありがとうございました! –

答えて

2

を数えます。

あなたはわずか数日のいくつかを持っている場合は、0から6

Sun = 0; Mon = 1; Tue = 2; etc.

に週番号のあなたの日を与える数字を保ちます。たとえば、MonTueFri、およびSatの場合は、それぞれの数字を日(125、および6)にしてください。

あなたは(数3を持っている)Wedから当時の間の「距離」を知りたい場合は今、あなたはこの数学を行うことができます。

distance = (theNumberOfYourDayInList - 3) mod 7

7は日数です、 ところで。

WedMonへ:5あるdistance = (1 - 3) mod 7

は、だから、間の距離を知りたい場合。

Wed~Fridistance = (4 - 3) mod 7は、1である。

TueからWed6あるdistance = (2 - 3) mod 7

これらのロジックをコードに変換することは簡単ではありません。問題に直面してはいけないと思います。

+0

非常に良い実装かもしれません。現在私はセルビンの論理を実装しています。そして確かに私はあなたのロジックも実装します。最も単純なロジックの場合+1。ありがとうございました! –

1

ただ、私が考えていることは以下ですが、おそらく、あなたのニーズに合うように少し変更する必要があり、それらを

int Count= days(Calendar.WEDNESDAY, Calendar.TUESDAY); 

private int days(int Day1, int Day2) { 
    int Days = 1; 
    while (Day1 != Day2) { 
     Day1 += 1; 
     Days += 1; 
     if (Day1 == Calendar.SATURDAY) Day1 = Calendar.SUNDAY; 
    } 
    return Days; 
} 
+0

同じ日に1を返します。 –

+0

それをチェックするか、Daysを0に初期化します。これは一例です。私はあなたのためのあなたのアプリを書いていないよ。これはNEXT週にカウントが必要な関数から変更されました。すなわち火曜日は8日になります – Kuffs

+0

私はあなたが私の申請書を書いていないことを知っています。私はそれが良い論理かもしれないと思ったが、そのバグを見つけるまでには時間がかかることに気づいた。とにかくありがとうございました! –

関連する問題