2012-11-07 7 views
5

私はアンドロイド2.3.5のHTCと2.3.6のサムスンと の問題を抱えています。 私は月の日付が必要です。Calendar.WEEK_OF_MONTHは異なる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 

this reアライは私の論理n計算を先に進めています。

私は何か間違っていますか?

+0

どこにシステム日付を設定しているコードはありますか?これがここで最も重要なコードです。もっと重要なのは、まったく同じコードを実行しているのか、それとも違いがあるのでしょうか? – HXCaine

+0

私はcalendarがロケールとタイムゾーンに依存すると信じています。 2つのデバイスが異なるタイムゾーンまたはロケールに登録されていますか?時間がミリ秒単位で設定されている場合、タイムゾーンによって異なる日になる可能性があります。疑わしいときはJodaTimeを使用してください。http://joda-time.sourceforge.net/ – BoredAndroidDeveloper

+0

27日は日曜日であるため、1つのデバイスで月曜日が開始されることもあります。 – Eric

答えて

10

おそらく、ロケールが原因である可能性があります。 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 
+0

オハイオ州素晴らしい...あなたのサポートに感謝します。知らせます。 –

+0

このコードで解決しました。 Calendar cal = Calendar.getInstance(TimeZone.getDefault()、Locale.US); cal.setFirstDayOfWeek(Calendar.SUNDAY); –

+0

ありがとうございます。あなたは私の命を救いました... :) –

0

2012年と2013年に設定されている場合は、それが設定されている年をもう一度確認してください。

カレンダーオブジェクトに保持されている日付をログに記録し、正しい情報が入力されているかどうかを確認するためにアプリケーションを取得することはできますか。