2

私のサンプル プロジェクトでは、来週月曜日から日曜日までテキスト ビューで実装する必要があります (5 月 6 日 >> 12 My など)。次のボタンをクリックすると、次の週の開始日と終了日が表示される必要があります (5 月 13 日 >> 5 月 19 日など)。次のコードで最初の週ビューを実装しました

   Calendar c = Calendar.getInstance();
    c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    SimpleDateFormat df = new SimpleDateFormat("dd MMMM");
    String printDate = df.format(c.getTime());
    //gestureEvent.setText(reportDate);
    c.add(Calendar.DAY_OF_WEEK, 6);
    String printDate2 = df2.format(c.getTime());
    gestureEvent.setText(reportDate +" >> "+reportDate2);

来週のボタンをクリックすると、私はこれを行いましたが、それは静的であり、単なる試みでした:)

onclick はこの関数 goNextWeek() を呼び出します

public void goNextWeek()
{

    Calendar c = Calendar.getInstance();
    c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

        c.add(Calendar.DAY_OF_WEEK, 6);
        System.out.println("End Date : " + c.getTime());

        SimpleDateFormat df = new SimpleDateFormat("dd MMMM");
        String reportDate = df.format(c.getTime());
        gestureEvent.setText(reportDate);
        c.add(Calendar.DAY_OF_WEEK, dates);
        c.add(Calendar.DAY_OF_WEEK, 1);
        System.out.println("End Date asdfadf: " + c.getTime()); 


}

来週の開始日と終了日を表示する方法を教えてください。

4

2 に答える 2

3

これがあなたの解決策です。

Calendar mCalendar = new GregorianCalendar(); 
        mCalendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        SimpleDateFormat mDF = new SimpleDateFormat("dd MMMM");
        String printDate = mDF.format(mCalendar.getTime());
        mCalendar.add(Calendar.DAY_OF_MONTH, 6);
        String printDate2 = mDF.format(mCalendar.getTime());

        System.out.println(printDate + " >> " + printDate2);
        gestureEvent.setText(printDate + " >> " + printDate2);

ボタンの実装に関する更新

パラメータとしてweekNumberを取るメソッドを書きます..

private static String getNextWeek(int weekFromToday) {
        Calendar mCalendar = new GregorianCalendar(); 
        mCalendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        mCalendar.set(Calendar.WEEK_OF_YEAR, 
                mCalendar.get(Calendar.WEEK_OF_YEAR) + weekFromToday);          

        SimpleDateFormat mDF = new SimpleDateFormat("dd MMMM");
        String printDate = mDF.format(mCalendar.getTime());
        System.out.println(printDate);

        //gestureEvent.setText(reportDate);
        mCalendar.add(Calendar.DAY_OF_MONTH, 6);
        String printDate2 = mDF.format(mCalendar.getTime());
        System.out.println(printDate + " >> " + printDate2);
        return printDate + " >> " + printDate2;        
    }

静的フィールドを次のように宣言します

private static int weekNumber = -1; 

ボタンクリック時に以下のコードを記述します

weekNumber = weekNumber + 1;
gestureEvent.setText(getNextWeek(weekNumber));

これは機能します。

ハッピーコーディング:)

于 2013-05-08T06:41:57.547 に答える
0

Joda-Time 2.3 ライブラリを使用すると、この種の日時処理が簡単になります。

時刻コンポーネントなしで日付のみが本当に必要な場合は、このコードを変更して、 DateTimeではなくLocalDateクラスを使用します。

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;

DateTime today = new DateTime().withTimeAtStartOfDay();

// Monday
DateTime monday = today.withDayOfWeek( DateTimeConstants.MONDAY ).withTimeAtStartOfDay();
if ( !(monday.isAfter( today )) ) {
    // If monday is today or earlier, move forward to future.
    monday = monday.plusWeeks( 1 );
}

// Sunday
DateTime sunday = today.withDayOfWeek( DateTimeConstants.SUNDAY ).withTimeAtStartOfDay();
if ( !(sunday.isAfter( today )) ) {
    // If sunday is today or earlier, move forward to future.
    sunday = sunday.plusWeeks( 1 );
}

System.out.println( "today: " + today );
System.out.println( "Monday: " + monday );
System.out.println( "Sunday: " + sunday );

実行すると…</p>

today: 2013-12-08T00:00:00.000-08:00
Monday: 2013-12-09T00:00:00.000-08:00
Sunday: 2013-12-15T00:00:00.000-08:00
于 2013-12-09T00:03:25.770 に答える