2012-11-07 78 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年,则可以解释差异。

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

相关问题