2012-11-07 105 views
5

我有兩個設備HTC與android 2.3.5和三星與2.3.6 現在我面臨的問題是 我需要日期的一週。Calendar.WEEK_OF_MONTH在兩個不同的設備上給出了不同的結果

所以我寫了這段代碼,並安裝在兩個手機上。和設置系統日期作爲

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

我相信日曆是區域設置和時區相關的。你的兩臺設備是否註冊到不同的時區或地區?如果時間以毫秒爲單位設置,那麼有可能時區使它成爲不同的日子。如果有疑問,請使用JodaTime http://joda-time.sourceforge.net/ – BoredAndroidDeveloper

+0

一臺設備可能還有星期一作爲本週的開始,因爲第27天是星期天。 – 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

解決此代碼謝謝... 日曆cal = Calendar.getInstance(TimeZone.getDefault(),Locale.US); cal.setFirstDayOfWeek(Calendar.SUNDAY); –

+0

謝謝。你救了我的命... :) –

0

仔細檢查設置的年份,如果其中一個設置爲2012年,另一個2013年,則可以解釋差異。

您能否讓應用程序記錄日曆對象中所保存的日期並將其發佈到此處以確保它們具有正確的信息。

相關問題