10

少し問題があります。アプリケーションを開発していて、週の開始日を月曜日から別の曜日 (木曜日、土曜日) に変更する必要があります。これはAndroidで可能ですか?日付を知って週の始まりと終わりを計算する必要があります。(例として、週は木曜日から始まります)

注:私はAndroid開発の初心者です。これが私のコードです SimpleDateFormat dateformat = 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());

上記のコードを使用すると結果が得られますが、月曜日が主役です。

注:開始日を変更すると週のインデックスが変更されるため、結果に日を追加できません

4

4 に答える 4

29

暦日は、日曜日から土曜日までの日に 1 から 7 の値を持ちます。getFirstDayOfWeekused に応じて、この値のいずれか (通常は月曜日または日曜日) を返しますLocaleCalendar.getInstance電話の設定に応じてデフォルトLocaleの depening を使用します。この場合、月曜日が週の最初の日になります。

1 つの解決策は、 other を使用することLocaleです。

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

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

他の解決策は、選択した曜日の値を使用することです

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

問題は、Calendar内部の週の最初の曜日の値も使用しsetていることです。例:

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

使用したくない場合、Localeまたは週の最初の曜日として他の日が必要な場合は、自分で週の始まりを計算するのが最善の方法かもしれません。

于 2013-05-13T13:39:00.757 に答える
3
GregorianCalendar cal = new GregorianCalendar(yy, currentMonth, 0);

値 0 を変更 - 月曜日から開始 値 1 を変更 - 日曜日から開始 など..

これが役に立ち、うまくいくことを願っています:)

于 2013-11-25T12:24:29.687 に答える
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" は、あなたが望む開始日を意味します

そうすれば、最初に表示する日を計算できます。簡単な方法があれば教えてください。ありがとう

于 2013-08-09T07:58:41.267 に答える