Android Calendar.WEEK\u OF_MONTH在两种不同的设备上给出不同的结果

Android Calendar.WEEK\u OF_MONTH在两种不同的设备上给出不同的结果,android,calendar,Android,Calendar,我有两台设备HTC和三星,分别采用安卓2.3.5和2.3.6 现在我面临的问题是 我需要一个月的星期 所以我写了这段代码并安装在两部手机上。并将系统日期设置为 2013年1月27日 现在在HTC上,输出是 weekOfMonth = 5 而在三星上运行相同的代码会产生 weekOfMonth = 4 这真的把我的逻辑计算搞砸了 我做错什么了吗?仔细检查设定的年份,如果其中一个设定为2012年,另一个设定为2013年,这将解释差异 您是否可以让应用程序记录日历对象中的日期,并将其发布到此处

我有两台设备HTC和三星,分别采用安卓2.3.5和2.3.6 现在我面临的问题是 我需要一个月的星期

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

2013年1月27日

现在在HTC上,输出是

 weekOfMonth = 5
而在三星上运行相同的代码会产生

 weekOfMonth = 4
这真的把我的逻辑计算搞砸了


我做错什么了吗?

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


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

这可能是由于区域设置造成的。在爪哇

        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

设置系统日期的代码在哪里?这是这里最重要的一段代码。更重要的是,您运行的是完全相同的代码还是存在差异?我相信日历取决于地区和时区。您的两台设备是否注册到不同的时区或地区?如果时间是以毫秒为单位设置的,那么时区可能会使它成为不同的一天。如果有疑问,请使用JodaTime,尽管一台设备也可能将周一作为一周的开始,因为27日是周日。使用此代码解决,谢谢。。。Calendar cal=Calendar.getInstance(TimeZone.getDefault(),Locale.US);cal.setFirstDayOfWeek(日历,星期日);谢谢你,伙计。你救了我的命……:)
France week of month is 4
USA week of month is 5
UK week of month is 4