7

私はAndroid2.3.5を搭載したHTCと2.3.6を搭載したSamsungの2つのデバイスを持っています。今私が直面している問題は、月の日付の週が必要なことです。

だから私はこのコードを書き、両方の電話にインストールしました。システムの日付を次のように設定します

2013年1月27日

  Calendar calendar = Calendar.getInstance();
  int weekOfMonth =  calendar.get(Calendar.WEEK_OF_MONTH);
  Log.i(TAG,"weekOfMonth = "+weekOfMonth);

現在HTCでは出力は

 weekOfMonth = 5

サムスンで同じコードを実行すると、

 weekOfMonth = 4

これは本当に私の論理nの計算を先にねじ込んでいます。

私は何か間違ったことをしていますか?

4

2 に答える 2

12

おそらくロケールが原因です。Javaの場合

        Calendar calFr = Calendar.getInstance(TimeZone.getTimeZone("Europe/Paris"), Locale.FRANCE);
        Calendar calUs = Calendar.getInstance(TimeZone.getTimeZone("US/Eastern"), Locale.US);
        Calendar calUk = Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.UK);
        calFr.set(2013, Calendar.JANUARY, 27);
        calUs.set(2013, Calendar.JANUARY, 27);
        calUk.set(2013, Calendar.JANUARY, 27);

        int weekOfMonthFr = calFr.get(Calendar.WEEK_OF_MONTH);
        int weekOfMonthUs = calUs.get(Calendar.WEEK_OF_MONTH);
        int weekOfMonthUk = calUk.get(Calendar.WEEK_OF_MONTH);
        System.out.println("France week of month is " + weekOfMonthFr);
        System.out.println("USA week of month is " + weekOfMonthUs);
        System.out.println("UK week of month is " + weekOfMonthUk);

あなたに与える

France week of month is 4
USA week of month is 5
UK week of month is 4
于 2012-11-07T20:37:10.257 に答える
0

設定されている年を再確認してください。一方が2012に設定され、もう一方が2013に設定されている場合は、違いがわかります。

アプリケーションにカレンダーオブジェクトに保持されている日付をログに記録させ、ここにも投稿して、正しい情報があることを確認できますか?

于 2012-11-07T18:58:27.547 に答える