1

日付から始まる年の半月の数を取得します。たとえば、私は2012年3月13日を持っており、結果として6を持っています。

Calendarクラスを試しましたが、正しく機能しません。

    Calendar cal = (GregorianCalendar) Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH,13);
    cal.set(Calendar.MONTH, 2);
    cal.set(Calendar.YEAR, 2012);
    int weekNum = cal.get(Calendar.WEEK_OF_YEAR);
    System.out.println("Weeknum:" + ((weekNum/2)));

誰か助けてもらえますか?

4

4 に答える 4

2

ここで定義されている半月を想定: http://en.wikipedia.org/wiki/Half-month

  Calendar cal = (GregorianCalendar) Calendar.getInstance();
  cal.set(Calendar.DAY_OF_MONTH, 13);
  cal.set(Calendar.MONTH, 2);
  cal.set(Calendar.YEAR, 2012);
  // remember, we have a zero based month
  int halfMonth = cal.get( Calendar.MONTH ) * 2 + 1;
  // 1-15 is first half-month 16-end of month is second
  int remainder = cal.get( Calendar.DAY_OF_MONTH ) / 16; 
  halfMonth += remainder;

  System.out.println( halfMonth );
于 2012-04-27T20:37:13.000 に答える
0

コードで何が起こるかを例で示す詳細。の次の 4 つの異なる値があると仮定しますWEEK_OF_YEAR

WEEK_OF_YEAR: 1
WEEK_OF_YEAR: 2
WEEK_OF_YEAR: 3
WEEK_OF_YEAR: 4

これらの値を 2 で割るとどうなるでしょうか。

WEEK_OF_YEAR: 1          (weekNum/2) = 1/2 = 0 
WEEK_OF_YEAR: 2          (weekNum/2) = 2/2 = 1
WEEK_OF_YEAR: 3          (weekNum/2) = 3/2 = 1
WEEK_OF_YEAR: 4          (weekNum/2) = 4/2 = 2

したがって、コードの問題は、年の最初の週が値 0 になることです。したがって、コードでやりたいことは、 を に置き換えること(weekNum/2)です((weekNum + 1)/2)

于 2012-05-02T11:27:25.190 に答える
0
Calendar cal = (GregorianCalendar) Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH,13);
cal.set(Calendar.MONTH, 2);
cal.set(Calendar.YEAR, 2012);
int hafMonthCount = cal.get(Calendar.DAY_OF_YEAR) / 14 ;
//here you must multiply by 2 :)
System.out.println("HalfMonthCount:" + hafMonthCount );

- -更新しました

使用する概念は Java で実装されていないため (フランス語では 14 日間クイズという概念がありますが、英語では言えません)、自分で計算する必要があります。

于 2012-04-27T12:48:30.300 に答える
0
于 2016-08-30T06:35:55.837 に答える