2013-05-13 13 views
5

私は少し問題があります。私はアプリケーションを開発しています。週の開始曜日を月曜日から土曜日の別の月曜日(土曜日)に変更する必要があります。これはアンドロイドで可能です、 私は開始日とその終わりを知っている終わりを計算する必要があります。 (週は例としてano thursdayを始めます)Androidのカレンダー:開始日の変更

注:私はAndroid開発の初心者です。 ここは私のコードです SimpleDateFormat dateformate = new SimpleDateFormat( "dd/MM");

// get today and clear time of day 
Calendar cal = Calendar.getInstance(); 

// get start of this week in milliseconds 
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); 
cal.add(Calendar.DAY_OF_YEAR, 7*(WeekIndex-1)); 
result = dateformate.format(cal.getTime()); 

cal.add(Calendar.DAY_OF_YEAR, 6); 

result=result+" - " + dateformate.format(cal.getTime()); 

上記のコードを使用して結果を取得していますが、mondayを週の星として使用しています。

注:それの変更で週屈折率変化が

+1

「私が必要開始曜日を変更する " - 何*? 'CalendarView'?他に何か? – CommonsWare

+0

あなたのコードを投稿してください。 – Blackbelt

+0

今すぐ私のポストをチェックしてください、悪い英語がひどいかもしれません –

答えて

20

カレンダー日日日曜日から土曜日の値1-7を持って開始していますので、私は結果に日を追加することはできません。 getFirstDayOfWeekは、使用されているLocaleに応じて、これらの値(通常は月曜日または日曜日)のいずれかを返します。 Calendar.getInstanceは、携帯電話の設定でデフォルトのLocaleを使用しています。この場合、月曜日は月曜日です。 Locale

一つの解決策は、他の使用することです:

Calendar.getInstance(Locale.US).getFirstDayOfWeek() 

がの値である、1を返しますCalendar.SUNDAY

他の解決策のように週値の選択された日を用いることであろう

cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); 

問題は、Calendarは、で週の最初の曜日の値を使用していますも同様である。例:あなたはLocaleを使用したくないか、あなたは週の最初の日として、他の日を必要とする場合

Calendar mondayFirst = Calendar.getInstance(Locale.GERMANY); //Locale that has Monday as first day of week 
mondayFirst.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); 
log(DateUtils.formatDateTime(context, mondayFirst.getTimeInMillis(), 0)); 
//prints "May 19" when runned on May 13 

Calendar sundayFirst = Calendar.getInstance(Locale.US); //Locale that has Sunday as first day of week 
sundayFirst.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); 
log(DateUtils.formatDateTime(context, sundayFirst.getTimeInMillis(), 0)); 
//prints "May 12" when runned on May 13 

、それは自分で週の開始を計算するのが最善かもしれません。

0
public int getWeekdayOfMonth(int year, int month){ 
    Calendar cal = Calendar.getInstance(); 
    cal.set(year, month-1, 1); 
    dayOfWeek = cal.get(Calendar.DAY_OF_WEEK)-1; 
    return dayOfWeek; 
} 

weekday = getWeekdayOfMonth();

int day = (weekday - firstweek) < 0 ? (7 - (firstweek - weekday)) : (weekday - firstweek); 

「firstweekは、」あなたの開始日が、あなたは、あなたが簡単な方法を持っているshow.Ifすべき最初の日を計算することができます

、教えてください欲しいものを意味します。値0を変更thks

3
GregorianCalendar cal = new GregorianCalendar(yy, currentMonth, 0); 

は - 値1を変更月曜日 から一日をスタート - ように日曜日 から一日をスタートして...このことができますし、作品

希望:)

+0

うまく働いています、ありがとうございました+1 –

関連する問題