Calendar.WEEK_OF_MONTH在两个不同的设备上提供不同的结果

时间:2012-11-07 18:41:04

标签: android calendar

我有两个设备HTC与Android 2.3.5和三星与2.3.6 现在我面临的问题是 我需要一个月的某个星期。

所以我写了这段代码并安装在两部手机上。并将系统日期设置为

  

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

这确实是我未来计算的错误。

我做错了什么?

2 个答案:

答案 0 :(得分:10)

可能是由于Locales。在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

答案 1 :(得分:0)

仔细检查设置的年份,如果一个设置为2012年,另一个设置为2013年,这将解释差异。

您是否可以让应用程序记录日历对象中保存的日期并将其发布到此处,以确保它们具有正确的信息。