2017-05-19 10 views
-1

今週のIE:Mon-Sunに現在の日付を取得しようとしています。次に、前と次の2つのボタンがあり、次と前の週の日付を取得するはずです。これにより、私は年の何週も無期限に回転することができます。Androidカレンダーは現在の週、前の週、次の週を取得します

  1. 前の週:2017/05/8から2017/5月14日
  2. ロード週:2017/05/15から2017/5月21日
  3. 来週:2017/05/22から2017/05/28

コードは中間日Mon-Sunを読み込みます。次のボタンを押すと、次の週の次の日に連れて行かれます。ここから「前へ」を押すと、最初にロードされた週がスキップされ、次の週の日付にジャンプします。私は前へ次へと別の方法をとって同じことが起こります。次のボタンや前のボタンを押すと、新しい週の読み込みを続行しません。

私は間違っていますか?

初期負荷コード:

DateFormat format = new SimpleDateFormat("M-dd"); 
Calendar calendar = Calendar.getInstance(); 
calendar.setFirstDayOfWeek(Calendar.MONDAY); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 

days = new String[7]; 
for (int i = 0; i < 7; i++) 
{ 
    days[i] = format.format(calendar.getTime()); 
    calendar.add(Calendar.DAY_OF_MONTH, 1); 
} 

来週コード:

DateFormat format = new SimpleDateFormat("M-dd"); 
Calendar calendar = Calendar.getInstance(); 
calendar.setFirstDayOfWeek(Calendar.MONDAY); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
calendar.add(Calendar.DAY_OF_MONTH, 7); 

days = new String[7]; 

for (int i = 0; i < 7; i++) 
{ 
    days[i] = format.format(calendar.getTime()); 
    calendar.add(Calendar.DAY_OF_MONTH, 1); 
} 

前の週コード:

DateFormat format = new SimpleDateFormat("M-dd"); 
Calendar calendar = Calendar.getInstance(); 
calendar.setFirstDayOfWeek(Calendar.MONDAY); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
calendar.add(Calendar.DAY_OF_MONTH, -7); 

days = new String[7]; 

for (int i = 0; i < 7; i++) 
{ 
    days[i] = format.format(calendar.getTime()); 
    calendar.add(Calendar.DAY_OF_MONTH, 1); 
} 

ソリューション:

Calendar calendar; // Stick this at the start of your code

初期負荷コード:

DateFormat format = new SimpleDateFormat("M-dd"); 
calendar = Calendar.getInstance(); 
calendar.setFirstDayOfWeek(Calendar.MONDAY); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 

days = new String[7]; 
for (int i = 0; i < 7; i++) 
{ 
    days[i] = format.format(calendar.getTime()); 
    calendar.add(Calendar.DAY_OF_MONTH, 1); 
} 

来週コード:

DateFormat format = new SimpleDateFormat("M-dd"); 
calendar.setFirstDayOfWeek(Calendar.MONDAY); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
calendar.add(Calendar.DAY_OF_MONTH, 7); 

days = new String[7]; 

for (int i = 0; i < 7; i++) 
{ 
    days[i] = format.format(calendar.getTime()); 
    calendar.add(Calendar.DAY_OF_MONTH, 1); 
} 

前の週コード:カレンダーカレンダー=カレンダー:

DateFormat format = new SimpleDateFormat("M-dd"); 
calendar.setFirstDayOfWeek(Calendar.MONDAY); 
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 
calendar.add(Calendar.DAY_OF_MONTH, -7); 

days = new String[7]; 

for (int i = 0; i < 7; i++) 
{ 
    days[i] = format.format(calendar.getTime()); 
    calendar.add(Calendar.DAY_OF_MONTH, 1); 
} 
+0

*「私は間違っていますか?」*あなたはあなたがどこにいるか覚えていません。あなたの「次の週のコード」は、現在表示されている週に相対的ではなく、**今日の**に対応して、次の週にいつも得られます。 – Andreas

+0

私はそれを修正することをどのように提案しますか? – BrownT

答えて

0

私は呼び出すことであることを考え出しました。 getInstance();カレンダーを混乱させるたびに

解決方法は、カレンダーカレンダー= Calendar.getInstance()を削除することです。前と次のコードから、変数Calanderカレンダーを実装します。あなたのコードの始めに。私は解決策で元のコードを編集します。

+0

"元のコードをソリューションで編集しないでください。"それが答えの答えです。それが立っているので、この答えはコメントではありません。 – shmosel

関連する問題